[英]How to make an instance of dropdown list object in a button_click event
有人請告訴我為什么單擊button1時會出現此錯誤
異常詳細信息:System.NullReferenceException:對象引用未設置為對象的實例。
問題出在下拉列表上。 如何在button1_ click事件中創建它們的實例?
protected void Button1_Click(object sender, EventArgs e)
{
string day = String.Empty;
string time = String.Empty;
string moduleId = string.Empty;
string moduleName = string.Empty;
DataTable dt = new DataTable();
dt.Columns.Add("ModuleID");
dt.Columns.Add("ModuleName");
dt.Columns.Add("Day");
dt.Columns.Add("Time");
foreach (GridViewRow row in GridView1.Rows)
{
DropDownList ddl_day = new DropDownList(); // wont work, I tried it!
day = ((DropDownList)row.FindControl("ddl_day")).SelectedItem.Value;
time = ((DropDownList)row.FindControl("ddl_time")).SelectedItem.Value;
DataRow dr = dt.NewRow();
// dr[0] = row.Cells[i].Text;
/* dr["ModuleID"] = moduleId;
dr["ModuleName"] = moduleName;*/
dr["Day"] = day;
dr["Time"] = time;
dt.Rows.Add(dr);
}
DataSet ds = new DataSet();
ds.DataSetName = "Student_module_data";
ds.Tables.Add(dt);
ds.WriteXml(@"E:\OBJECT ORIENTED DEV'T\xml_data\testing.xml");
}
這是我的html
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" OnRowDataBound="OnRowDataBound">
<Columns>
<asp:TemplateField HeaderText="Day">
<ItemTemplate>
<asp:DropDownList ID="ddl_days" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Time">
<ItemTemplate>
<asp:DropDownList ID="ddl_time" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="Select" ShowSelectButton="True" />
</Columns>
<FooterStyle BackColor="White" ForeColor="#000066" />
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>
看起來像下面的行返回null
((DropDownList)row.FindControl("ddl_day"));
並且,當您嘗試使用其屬性時,它給出了空引用錯誤。 因此,請檢查它是否為null。
var ddl_day = ((DropDownList)row.FindControl("ddl_day"));
if(ddl_day!=null)
{
day = ddl_day.SelectedItem.Value;
}
同時檢查其他下拉菜單相同。
正如Zaki在評論中ddl_day
,將HTML代碼中的DropdownList ID從ddl_days
更改為ddl_day
。 這是主要問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.