我正在尝试制作一个"时钟输入/输出网站"其中一个功能是用户编辑旧的时钟输入/输出。我添加了一个带有2个值的下拉列表" IND"和" UD"。我如何获得这些价值,并将它们发送到我的" CHECKIN" sql值。
我希望你知道我想解释什么。
这就是它的样子:
下拉:
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server"
OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged">
<asp:ListItem Selected="True">Ind</asp:ListItem>
<asp:ListItem Value="UD">Ud</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
我尝试了什么:
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.SelectedRow;
string val = row.Cells[3].ToString();
SqlDataSource1.SelectParameters.Add("CHECKEDIN", val);
}
以及:
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)GridView1.FindControl("DropDownList2");
string val = ddl.SelectedValue;
SqlDataSource1.SelectParameters.Add("CHECKEDIN", val);
}
这两个都返回&#34; null&#34;寿
答案 0 :(得分:0)
您可以将发件人转发回DropDownlist并获取所选值
DropDownList dropDownList = sender as DropDownList;
string val = dropDownList.SelectedValue;
但是你怎么知道这个方法DropDownList属于哪一行?
你可以使用一个技巧,比如滥用CSS类来获得正确的行号。
<asp:DropDownList ID="DropDownList2" runat="server" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged" AutoPostBack="true" CssClass='<%# Container.DataItemIndex %>'>
在代码中获取行号。
int rowNumber = Convert.ToInt32(dropDownList.CssClass);
答案 1 :(得分:0)
使用GridView
的 RowDataBound
事件。
<强>代码强>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow
&& GridView1.EditIndex == e.Row.RowIndex)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList2");
string val = ddl.SelectedValue.ToString();
SqlDataSource1.SelectParameters.Add("CHECKEDIN", val);
}
}