Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t在c中获取下拉列表上的数据值字段设置#_C#_Asp.net - Fatal编程技术网

C# Can';t在c中获取下拉列表上的数据值字段设置#

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

我无法在c#中编辑项模板的下拉列表中获取DataValueField设置

我需要更新GridView的行,在弹出窗口中打开新的aspx页面,从DB MySQL中选择ID

我有一个错误:

对象引用未设置为对象的实例

在此代码隐藏行中:

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
。非常感谢!