Ton*_*one 5 asp.net gridview edititemtemplate drop-down-menu
我有一个Gridview绑定到ObjectDataSource(objStudentDetails).在Gridview的编辑/插入模式中,其中一个字段是DropDownList,它从查找表中获取它的选择列表选项.我将此DropDownList绑定到另一个表示查找表的ObjectDataSource控件(objStateList).只要objStudentDetails ObjectDataSource中的值与objStateList ObjectDataSource中的某个值匹配,它就可以正常工作,至少在非空字符串值的情况下是这样.
objStateList具有这些值(来自存储的proc加载它 - ID#6是一个空字符串''):
StateId State
----------- -----
6
4 AL
1 GA
3 KY
2 TN
Run Code Online (Sandbox Code Playgroud)
objStudentDetails具有这些值(来自加载它的存储过程):
FirstName LastName State
----------- ---------- -----
tone smith TN
Run Code Online (Sandbox Code Playgroud)
或者它可以有这个结果集(State是一个空字符串 - ''):
FirstName LastName State
----------- ---------- -----
jenny johnson
Run Code Online (Sandbox Code Playgroud)
在第一个objStudentDetails结果集中,EditItemTemplate中的状态DropDownList显示正常.但是,在第二个结果集中,我收到此错误:
'ddlEditState' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
Run Code Online (Sandbox Code Playgroud)
我认为,因为我的查找表有一个空字符串的值,objStudentDetails值与状态的空字符串匹配,但有些东西不能按照我期望的方式工作.
这是Gridview的EditItemTemplate代码:
<EditItemTemplate>
<asp:Panel ID="panEditState" runat="server">
<asp:DropDownList ID="ddlEditState" runat="server" CssClass="GridviewDropdownlist"
DataSourceID="objStateList" DataTextField="State" DataValueField="State"
SelectedValue='<%# Bind("State") %>'
Width="50px">
</asp:DropDownList>
</asp:Panel>
</EditItemTemplate>
Run Code Online (Sandbox Code Playgroud)
和objStateList,它调用一个方法传递查询表的查询参数:
<asp:ObjectDataSource ID="objStateList" runat="server" SelectMethod="GetDropdownData" TypeName="AIMLibrary.BLL.DropdownData">
<SelectParameters>
<asp:Parameter Name="itemsToGet" DefaultValue="state" />
</SelectParameters>
</asp:ObjectDataSource>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
小智 9
首先将DropDownLists的AppendDataBoundItems属性设置为true.接下来,通过向<asp:ListItem>
每个DropDownList 添加以下元素来添加NULL ListItem,以便声明性标记看起来像:
<asp:DropDownList ID="Categories" runat="server"
DataSourceID="CategoriesDataSource" DataTextField="CategoryName"
DataValueField="CategoryID" SelectedValue='<%# Bind("CategoryID") %>'
AppendDataBoundItems="True">
<asp:ListItem Value="">[nothing selected]</asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16566 次 |
最近记录: |