【发布时间】:2017-11-16 20:15:03
【问题描述】:
由于某种原因,我的 DataGrid 中的下拉列表给了我错误:
Specified argument was out of the range of valid values.
Parameter name: index
从行:
CType(dgAdmins.Controls(0).Controls(dgAdmins.Controls(0).Controls.Count - 1).Controls(0).FindControl("ddlAddGroup"), DropDownList).DataSource = rdr
我以前见过此代码设置工作,所以不确定我缺少什么。我的 templateColumn 是 DataGrid 中的第二列。
vb.net
Sub dg_Edit(ByVal s As Object, ByVal e As DataGridCommandEventArgs)
fillGroups()
End sub
Sub fillGroups()
Using con2 As New MySqlConnection
con2.ConnectionString = GetconnString(strFloor, lblDB.Text)
Dim cmd2 As New MySqlCommand()
con2.Open()
cmd2.Connection = con2
cmd2.CommandText = "stp_Select_GroupNames"
cmd2.CommandType = System.Data.CommandType.StoredProcedure
Dim rdr As MySqlDataReader
rdr = cmd2.ExecuteReader
CType(dgAdmins.Controls(0).Controls(dgAdmins.Controls(0).Controls.Count - 1).Controls(0).FindControl("ddlAddGroup"), DropDownList).DataSource = rdr
CType(dgAdmins.Controls(0).Controls(dgAdmins.Controls(0).Controls.Count - 1).Controls(0).FindControl("ddlAddGroup"), DropDownList).DataValueField = "ID"
CType(dgAdmins.Controls(0).Controls(dgAdmins.Controls(0).Controls.Count - 1).Controls(0).FindControl("ddlAddGroup"), DropDownList).DataTextField = "GroupName"
CType(dgAdmins.Controls(0).Controls(dgAdmins.Controls(0).Controls.Count - 1).Controls(0).FindControl("ddlAddGroup"), DropDownList).DataBind()
rdr.Close()
con2.Close()
End Using
End sub
ASP.net
<asp:TemplateColumn HeaderText="'Group'" ItemStyle-Width="225" FooterStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<FooterTemplate>
<asp:DropDownList ID="ddlAddGroup" runat="server" />
</FooterTemplate>
<ItemTemplate>
<%#Container.DataItem("GroupName")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlEditGroup" runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
更新
存储过程
CREATE DEFINER=`root`@`%` PROCEDURE `stp_Select_GroupNames`()
BEGIN
SELECT ID, GroupName from tblg;
END
当我从存储过程中运行数据集时,我会返回一个计数,因此我知道我也会返回记录。
【问题讨论】:
-
该下拉列表有数据吗?我的第一个想法是没有数据,-1会导致错误。
-
另外,你能展示你的存储过程吗?
-
显示整个网格标记。如果您在违规行上设置断点,那么 dgAdmins.Controls(0).Controls.Count 的值是多少?
-
@mjw 计数为 4
-
添加存储过程@WEI_DBA
标签: mysql asp.net drop-down-menu controls