下面的代码老是提示
“DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
参数名: value
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
参数名: value我是想把depid数字显示为部门编号,但是不知道为什么老是提示上面的错误,搞不清了,大家帮忙看看
<asp:FormView ID="FormView1" runat="server" AllowPaging="True" DataKeyNames="ID"
DataSourceID="SqlDataSource1">
<EditItemTemplate>
ID:
<asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID") %>'></asp:Label><br />
UserName:
<asp:TextBox ID="UserNameTextBox" runat="server" Text='<%# Bind("UserName") %>'></asp:TextBox><br />
PassWD:
<asp:TextBox ID="PassWDTextBox" runat="server" Text='<%# Bind("PassWD") %>'></asp:TextBox><br />
depname:
<asp:TextBox ID="depnameTextBox" runat="server" Text='<%# Bind("depname") %>'></asp:TextBox><br />
depid:
<asp:TextBox ID="depidTextBox" runat="server" Text='<%# Bind("depid") %>'></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" SelectedValue='<%# Bind("depid") %>'
DataTextField="depid" DataValueField="depid" >
</asp:DropDownList><br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
Text="更新"></asp:LinkButton>
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="取消"></asp:LinkButton>
</EditItemTemplate>
<InsertItemTemplate>
UserName:
<asp:TextBox ID="UserNameTextBox" runat="server" Text='<%# Bind("UserName") %>'>
</asp:TextBox><br />
PassWD:
<asp:TextBox ID="PassWDTextBox" runat="server" Text='<%# Bind("PassWD") %>'>
</asp:TextBox><br />
depname:
<asp:TextBox ID="depnameTextBox" runat="server" Text='<%# Bind("depname") %>'>
</asp:TextBox><br />
depid:
<asp:TextBox ID="depidTextBox" runat="server" Text='<%# Bind("depid") %>'>
</asp:TextBox><br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
Text="插入">
</asp:LinkButton>
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="取消">
</asp:LinkButton>
</InsertItemTemplate>
<ItemTemplate>
ID:
<asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>'></asp:Label><br />
UserName:
<asp:Label ID="UserNameLabel" runat="server" Text='<%# Bind("UserName") %>'></asp:Label><br />
PassWD:
<asp:Label ID="PassWDLabel" runat="server" Text='<%# Bind("PassWD") %>'></asp:Label><br />
depname:
<asp:Label ID="depnameLabel" runat="server" Text='<%# Bind("depname") %>'></asp:Label><br />
depid:
<asp:Label ID="depidLabel" runat="server" Text='<%# Bind("depid") %>'></asp:Label><br />
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
Text="编辑">
</asp:LinkButton>
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
Text="删除">
</asp:LinkButton>
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New"
Text="新建">
</asp:LinkButton>
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:jbwebschoolConnectionString %>" DeleteCommand="DELETE FROM [FT_User] WHERE [ID] = @original_ID"
InsertCommand="INSERT INTO [FT_User] ([UserName], [PassWD], [depname], [depid]) VALUES (@UserName, @PassWD, @depname, @depid)"
OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [ID], [UserName], [PassWD], [depname], [depid] FROM [FT_User]"
UpdateCommand="UPDATE [FT_User] SET [UserName] = @UserName, [PassWD] = @PassWD, [depname] = @depname, [depid] = @depid WHERE [ID] = @original_ID">
<DeleteParameters>
<asp:Parameter Name="original_ID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="UserName" Type="String" />
<asp:Parameter Name="PassWD" Type="String" />
<asp:Parameter Name="depname" Type="String" />
<asp:Parameter Name="depid" Type="Int32" />
<asp:Parameter Name="original_ID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="UserName" Type="String" />
<asp:Parameter Name="PassWD" Type="String" />
<asp:Parameter Name="depname" Type="String" />
<asp:Parameter Name="depid" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:jbwebschoolConnectionString %>"
SelectCommand="SELECT [depid], [depname], [deptype], [depnumber] FROM [dep]"></asp:SqlDataSource>
“DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
参数名: value
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
参数名: value我是想把depid数字显示为部门编号,但是不知道为什么老是提示上面的错误,搞不清了,大家帮忙看看
<asp:FormView ID="FormView1" runat="server" AllowPaging="True" DataKeyNames="ID"
DataSourceID="SqlDataSource1">
<EditItemTemplate>
ID:
<asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID") %>'></asp:Label><br />
UserName:
<asp:TextBox ID="UserNameTextBox" runat="server" Text='<%# Bind("UserName") %>'></asp:TextBox><br />
PassWD:
<asp:TextBox ID="PassWDTextBox" runat="server" Text='<%# Bind("PassWD") %>'></asp:TextBox><br />
depname:
<asp:TextBox ID="depnameTextBox" runat="server" Text='<%# Bind("depname") %>'></asp:TextBox><br />
depid:
<asp:TextBox ID="depidTextBox" runat="server" Text='<%# Bind("depid") %>'></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" SelectedValue='<%# Bind("depid") %>'
DataTextField="depid" DataValueField="depid" >
</asp:DropDownList><br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
Text="更新"></asp:LinkButton>
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="取消"></asp:LinkButton>
</EditItemTemplate>
<InsertItemTemplate>
UserName:
<asp:TextBox ID="UserNameTextBox" runat="server" Text='<%# Bind("UserName") %>'>
</asp:TextBox><br />
PassWD:
<asp:TextBox ID="PassWDTextBox" runat="server" Text='<%# Bind("PassWD") %>'>
</asp:TextBox><br />
depname:
<asp:TextBox ID="depnameTextBox" runat="server" Text='<%# Bind("depname") %>'>
</asp:TextBox><br />
depid:
<asp:TextBox ID="depidTextBox" runat="server" Text='<%# Bind("depid") %>'>
</asp:TextBox><br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
Text="插入">
</asp:LinkButton>
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
Text="取消">
</asp:LinkButton>
</InsertItemTemplate>
<ItemTemplate>
ID:
<asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>'></asp:Label><br />
UserName:
<asp:Label ID="UserNameLabel" runat="server" Text='<%# Bind("UserName") %>'></asp:Label><br />
PassWD:
<asp:Label ID="PassWDLabel" runat="server" Text='<%# Bind("PassWD") %>'></asp:Label><br />
depname:
<asp:Label ID="depnameLabel" runat="server" Text='<%# Bind("depname") %>'></asp:Label><br />
depid:
<asp:Label ID="depidLabel" runat="server" Text='<%# Bind("depid") %>'></asp:Label><br />
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
Text="编辑">
</asp:LinkButton>
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
Text="删除">
</asp:LinkButton>
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New"
Text="新建">
</asp:LinkButton>
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:jbwebschoolConnectionString %>" DeleteCommand="DELETE FROM [FT_User] WHERE [ID] = @original_ID"
InsertCommand="INSERT INTO [FT_User] ([UserName], [PassWD], [depname], [depid]) VALUES (@UserName, @PassWD, @depname, @depid)"
OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT [ID], [UserName], [PassWD], [depname], [depid] FROM [FT_User]"
UpdateCommand="UPDATE [FT_User] SET [UserName] = @UserName, [PassWD] = @PassWD, [depname] = @depname, [depid] = @depid WHERE [ID] = @original_ID">
<DeleteParameters>
<asp:Parameter Name="original_ID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="UserName" Type="String" />
<asp:Parameter Name="PassWD" Type="String" />
<asp:Parameter Name="depname" Type="String" />
<asp:Parameter Name="depid" Type="Int32" />
<asp:Parameter Name="original_ID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="UserName" Type="String" />
<asp:Parameter Name="PassWD" Type="String" />
<asp:Parameter Name="depname" Type="String" />
<asp:Parameter Name="depid" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:jbwebschoolConnectionString %>"
SelectCommand="SELECT [depid], [depname], [deptype], [depnumber] FROM [dep]"></asp:SqlDataSource>
解决方案 »
- 使用母版页的页面回发后,GridView控件中的数据都没有了,怎样才能保持住GridView中的数据呢?
- session丢失,大家发表一下看法
- aspx 如何弹出"CSDN收藏帖子"的小页面? [图]
- 靠,郁闷散分!
- 在SQL2005中建立了一张表,可是为什么不能直接在表中输入中文?输入英文、数字都没有问题,用sql插入中文也没有问题这是为什么?
- 新手上路,请指点一下
- treeview问题
- 关于页面refresh的问题
- 用js打开文档的一个问题,谢谢
- ExecuteScalar问题
- 请教一个问题:
- 困惑:为什么vs2005中htmlTable的属性框中没有bgcolor,bordercolor属性?
Bind("depid") 这个方法返回一个DATATABLE吗
DataTextField="depname" DataValueField="depid" >
这句有问题,Bind("depid")得到的结果在你数据源的deptid里肯定没有
SelectedValue='<%# Bind("depid") %>' 这个绑定语法完全是正确的!上面有其他说法的兄弟们要注意更正自己原先错误的理解了。
SelectedValue不能赋值,用SelectedIndex
.NET Framework 类库 ListControl.SelectedValue 属性请参见
ListControl 类 | ListControl 成员 | System.Web.UI.WebControls 命名空间 | SelectedItem | SelectedIndex | DataValueField | Items | ListItem | System.ArgumentOutOfRangeException | C++ 托管扩展编程
要求
平台: Windows 2000, Windows XP Professional, Windows Server 2003 系列
语言
C#C++JScriptVisual Basic全部显示
注意:此命名空间、类或成员仅在 .NET Framework 1.1 版中受支持。
获取列表控件中选定项的值,或选择列表控件中包含指定值的项。[Visual Basic]
Public Overridable Property SelectedValue As String[C#]
public virtual string SelectedValue {get; set;}[C++]
public: __property virtual String* get_SelectedValue();
public: __property virtual void set_SelectedValue(String*);[JScript]
public function get SelectedValue() : String;
public function set SelectedValue(String);属性值
列表控件中选定项的值。默认值为空字符串 ("")。异常
异常类型 条件
ArgumentOutOfRangeException SelectedValue 属性的设定值与列表控件中的项不相符。 备注
通常使用 SelectedValue 属性确定列表控件中选定项的值。如果未选定任何项,则返回一个空字符串 ("")。SelectedValue 属性还可以用于选择列表控件中的某一项,方法是用该项的值设置此属性。如果列表控件中的任何项都不包含指定值,则会引发 System.ArgumentOutOfRangeException。..........
完全正确,SelectedValue当然可以绑定赋值,说不可以的同学自己试试吧,不知道被谁误了lz代码看不出问题,只能是你数据源返回的值确实不在DrowDownList的列表中(注意null),可以试着监控该值或者,DropDownList或FromView 的Binding事件中写代码处理,试着用DropDownList.Items.FindByValue(v)查找item
dl_pdname.DataTextField = "lm_name";
dl_pdname.DataValueField = "lm_id";
dl_pdname.DataSource = myLanmu.DataSource;
dl_pdname.DataBind();DropDownList 绑顶数据很简单,你怎么搞得那么麻烦?
主要问题出在,GRIDVIEW所bind的数据库中的值,在dropdownlist中找不到,查了资料说是因为sql出来的值("abc ")前后有空格,所以和dropdownlist中的值("abc")不匹培造成,如何解决我也一直没有找到方法。
然后数据库不匹配的问题我是这样解决的
首先是dropdownlist的绑定,没有使用DATASET的方式,而是采用sqldatareader,这里效率应该比dataset高
///////////////////////////////////////
Dim dlctype As SqlDataReader
dlctype = ......(取出sqldatareader)
Do While dlctype.Read
Me.dl_ctype.Items.Add(New ListItem(dlctype("id"), dlctype("name")))
Loop
Me.dl_ctype.Items.Insert(0, New ListItem("未分类", 0))
dlctype.Close()
/////////////////////////////////
dropdownlist的赋值,如果没有匹配值,则增加一个值
///////////////////////////////////
Try
Me.dl_ctype.SelectedValue = Reader("name")
Catch ex As Exception
Me.dl_ctype.Items.Insert(1, New ListItem(Reader("id"), Reader("name")))
Me.dl_ctype.SelectedValue = Reader("ctype")
End Try
DropDownList1.SelectedIndex=DropDownList1.Item.IndexOf(DropDownList1.Item.FindByText("部门名称"));能达到同样的效果,但条件是DropDownList1的text中必须的有“部门名称”这个数值。