グリッドビューのフッターにドロップダウンリストがあります。これは挿入用のものなので、データベースから読み込むようにします。グリッド表示のドロップダウンリストフッター(NullReferenceException)
私はhereからこの目的のためのコードを得ましたが、それは動作しますが、私がフッターのために同じものを書くとき、それは私にエラーを与えます:System.NullReferenceException。
私のコードは怒鳴るです:背後
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound" ShowFooter="True">
<Columns>
<asp:BoundField HeaderText="EId" DataField="EId" />
<asp:TemplateField HeaderText = "CName">
<ItemTemplate>
<asp:Label ID="lblCountry" runat="server" Text='<%# Eval("CName") %>' Visible = "false" />
<asp:DropDownList ID="ddlCountries" runat="server">
</asp:DropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ddlCName" CssClass="auto-style16" Width="80px" runat="server" ></asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
コード:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = GetData("select * from TbExam inner join TBCourse on TBCourse.CId = TbExam.CId inner join TbCourseMajor on TbCourseMajor.CId=TBCourse.CId");
GridView1.DataBind();
}
}
private DataSet GetData(string query)
{
string conString = ConfigurationManager.ConnectionStrings["RigesterConnectionString1"].ConnectionString;
SqlCommand cmd = new SqlCommand(query);
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataSet ds = new DataSet())
{
sda.Fill(ds);
return ds;
}
}
}
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Find the DropDownList in the Row
DropDownList ddlCountries = (e.Row.FindControl("ddlCountries") as DropDownList);
ddlCountries.DataSource = GetData("SELECT * FROM TBCourse INNER JOIN TbCourseMajor ON TBCourse.CId = TbCourseMajor.CId ");
ddlCountries.DataTextField = "CName";
ddlCountries.DataValueField = "CId";
ddlCountries.DataBind();
//Add Default Item in the DropDownList
ddlCountries.Items.Insert(0, new ListItem("Please select"));
DropDownList ddlCName = GridView1.FooterRow.FindControl("ddlCName") as DropDownList;
ddlCName.DataSource = GetData("SELECT * FROM TBCourse INNER JOIN TbCourseMajor ON TBCourse.CId = TbCourseMajor.CId ");
ddlCName.DataTextField = "CName";
ddlCName.DataValueField = "CId";
ddlCName.DataBind();
//Add Default Item in the DropDownList
ddlCName.Items.Insert(0, new ListItem("Please select"));
}
}
デバッグを試して、NullReferenceExceptionがスローされている場所を特定しましたか? –
どのラインですか? – Berkay
申し訳ありません私はエラーの行を参照して忘れていました。次の行にあります:DropDownList ddlCName = GridView1.FooterRow.FindControl( "ddlCName")as DropDownList; – AL3MS