使用FOR循环返回DropDownList的Selected Value

时间:2014-08-18 16:51:02

标签: c# asp.net

我花了很多时间寻找解决方案似乎很简单的事情。

以下命令返回未设置为对象实例的" Object引用。"错误。我将此代码放在单独的空白页面上进行故障排除。有什么想法吗?

ASP.Net:

<div>
    <asp:DropDownList ID="ChoosePattern1" ClientIDMode="Static" runat="server" CssClass="dropformat"
        AutoPostBack="true" OnSelectedIndexChanged="getimage">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
    </asp:DropDownList>
    <asp:DropDownList ID="ChoosePattern2" ClientIDMode="Static" runat="server" CssClass="dropformat"
        AutoPostBack="true" OnSelectedIndexChanged="getimage">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
    </asp:DropDownList>
</div>

C#Codebehind:

protected void getimage(object sender, EventArgs e)
{
    for (int intCounter = 1; intCounter <= 8; intCounter++)
    {
        string mypattern = "ChoosePattern" + Convert.ToString(intCounter);

        DropDownList ddl = Page.FindControl(mypattern) as DropDownList;
        Response.Write(ddl.SelectedValue);
    }
}

3 个答案:

答案 0 :(得分:0)

您正在请求ChoosePattern1 ... ChoosePattern8项目,但仅在页面上存在ChoosePattern1和ChoosePattern2。

DropDownList ddl = Page.FindControl("ChoosePattern3") as DropDownList;

你得到null,因为不存在使用这种ID的下拉。

答案 1 :(得分:0)

该错误消息称为&#34;空引用异常&#34;。它通常意味着您尝试从对象访问属性,但该对象为空。

在您的情况下,ddl可能是问题所在。如果Page.FindControl找不到它(或者返回的对象不是DropDownList),则存储的值将为null。因此,访问SelectedValue将导致异常。

答案 2 :(得分:0)

更改

for(int intCounter = 1; intCounter&lt; = 8; intCounter ++)

for(int intCounter = 1; intCounter&lt; = 2; intCounter ++)