开发者

asp.net dropdownlist embedded in a listvew not providing selected value to update parameter

开发者 https://www.devze.com 2023-04-06 03:56 出处:网络
I have an asp.net page with a listview which is bound to an SQLDataSource.Embedded into the Edit and Insert templates I have a dropDownList which is bound to a second SQLDataSource.In the update param

I have an asp.net page with a listview which is bound to an SQLDataSource. Embedded into the Edit and Insert templates I have a dropDownList which is bound to a second SQLDataSource. In the update parameters I have specified the corresponding parameter to use the Selected Value of the DropDownList (At least I think I have). Unfortunately the selected value is not making it through into the update. If I try to refer the the dropdowlist control explicitly and try to do the update or Insert, the runtime complains that there are too many parameters being passed to the stored procedure used to do the update/insert. Code snippets are below.

Edit Template

<td class="GridContent">
<asp:DropDownList 
    ID="lstDataType" 
    runat="server" 
    DataSourceID="DataType" 
    DataTextField="Name" 
    DataValueField="Name" 
    CssClass="GridContent">
</asp:DropDownList>

Control Parameter (Using the ListView control - Doesn't provide the selected value)

<asp:ControlParameter 
    ControlID="lstFields" 
    Name="DataType" 
    PropertyName="SelectedValue"
    Type="String" />

Control Parameter (using the DropDownList control - Update complains of too many parameters)

<asp:ControlParameter 
    ControlID="lstTypeID" 
    Name="Name" 
    PropertyName="SelectedValue"
    Type="String" />

So I suppose my question is how do I get the Control Parameter for the update to reference the selected value of the embedded dropdownlist.

UPDATE

In the end it took me a while to find the answer, but it is quite straight forward; although finding the controls at the bottom of the ListView control tree was a complete nightmare.

What I did was add a hidden label control into the update and insert templates and bound this to the SQLDataSource for the listview. Then I grabbed the FindControlRecursive function that's in some sample code on the MSDN site at the bottom of the article here:

http://msdn.microsoft.com/en-us/library/y81z8326.aspx

Then in the Page_Load method for my page I added two calls the the FindControlRecursive function, one to get the label and the other to get the dropdownlist. Then simply assigned the DropDownList.text value to the Lab开发者_如何学Pythonel.text and it all worked beautifully.


I've been doing another listview with an embedded dropdownlist and made an interesting discovery (Well I think so). It seems that it isn't necessary to have the code behind to assign the text for the selected item to the label control. All that is necessary is for the hidden label and the drop down to both be bound to the appropriate field in the DataSource.

0

精彩评论

暂无评论...
验证码 换一张
取 消