C# Can';t在c中获取下拉列表上的数据值字段设置#
我无法在c#中编辑项模板的下拉列表中获取DataValueField设置 我需要更新GridView的行,在弹出窗口中打开新的aspx页面,从DB MySQL中选择ID 我有一个错误: 对象引用未设置为对象的实例 在此代码隐藏行中:C# Can';t在c中获取下拉列表上的数据值字段设置#,c#,asp.net,C#,Asp.net,我无法在c#中编辑项模板的下拉列表中获取DataValueField设置 我需要更新GridView的行,在弹出窗口中打开新的aspx页面,从DB MySQL中选择ID 我有一个错误: 对象引用未设置为对象的实例 在此代码隐藏行中: string taskID = ddlID.DataValueField; 你能帮我吗 我的代码如下,提前感谢您的任何帮助,非常感谢 .cs protected void ddlID_SelectedIndexChanged(object sender, Even
string taskID = ddlID.DataValueField;
你能帮我吗
我的代码如下,提前感谢您的任何帮助,非常感谢
.cs
protected void ddlID_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlID = new DropDownList();
ddlID = (DropDownList)FindControl("ddlID");
string taskID = ddlID.DataValueField;
string queryString = "newPage.aspx?membershipId=" + taskID.ToString().ToUpper();
string newWin = "var Mleft = (screen.width/2)-(1200/2);
var Mtop = (screen.height/2)-(700/2);
window.open('" + queryString + "','_blank','height=600,width=900,
status=yes,
toolbar=no,scrollbars=yes,menubar=no,
location=no,top=\'+Mtop+\', left=\'+Mleft+\';');";
ClientScript.RegisterStartupScript(this.GetType(), "pop", newWin, true);
}
.aspx
<asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="ddlID" runat="server"
AutoPostBack="true" OnSelectedIndexChanged="ddlID_SelectedIndexChanged"
BackColor="Yellow" DataValueField='<%# Eval("ID")%>'>
<asp:ListItem Text="--------------" Value=""></asp:ListItem>
<asp:ListItem Text="Update Name" Value="1"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
#Edit01
<asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="ddlID" runat="server"
AutoPostBack="true" OnSelectedIndexChanged="ddlID_SelectedIndexChanged"
BackColor="Yellow" DataValueField="ID">
<asp:ListItem Text="--------------" Value=""></asp:ListItem>
<asp:ListItem Text="Update Name" Value="1"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
protected void ddlID_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlID = new DropDownList();
string taskID = ddlID.SelectedValue;
string queryString = "newPage.aspx?membershipId=" + taskID.ToString().ToUpper();
string newWin = "var Mleft = (screen.width/2)-(1200/2);
var Mtop = (screen.height/2)-(700/2);
window.open('" + queryString + "','_blank','height=600,width=900,
status=yes,
toolbar=no,scrollbars=yes,menubar=no,
location=no,top=\'+Mtop+\', left=\'+Mleft+\';');";
ClientScript.RegisterStartupScript(this.GetType(), "pop", newWin, true);
}
受保护的无效ddlID\u SelectedIndexChanged(对象发送方,事件参数e)
{
DropDownList ddlID=新的DropDownList();
字符串taskID=ddlID.SelectedValue;
字符串queryString=“newPage.aspx?membershipId=“+taskID.ToString().ToUpper();
字符串newWin=“var Mleft=(screen.width/2)-(1200/2);
变量Mtop=(屏幕高度/2)-(700/2);
窗口打开(“+queryString+”,“U blank”,“高度=600,宽度=900,
状态=是,
工具栏=否,滚动条=是,菜单栏=否,
位置=否,顶部=\'+Mtop+\',左侧=\'+Mleft+\';);
RegisterStartupScript(this.GetType(),“pop”,newWin,true);
}
您的DropDownList位于GridView的EditTemplate中,因此您必须从发件人处获取它:
DropDownList ddlID = sender as DropDownList;
string taskID = ddlID.DataValueField;
在DataValueField中,您应该只添加字段的名称,而不是Eval函数。因此,在您的情况下,它将是DataValueField='ID'。然后在后端代码中,您可以使用ddlID.SelectedValue获取所选值。@ssimeonov谢谢您的帮助,我没有错误,但membershipId querystring的值为空。请参见我第一个问题中的#Edit01。替换DropDownList ddlID=new DropDownList();具有以下DropDownList ddlID=(DropDownList)发送方;由于dropdownlist位于edititemtemplate中,网格必须处于编辑模式才能使用FindControl
。但是由于您处于SelectedIndexChanged
-事件中,您只需将sender
参数转换为DropDownList
。非常感谢!