【发布时间】:2014-08-28 22:52:58
【问题描述】:
我需要在 GridView 的 Footer Template 中填充一个 DropDownList。
教程是:
我试过使用这个解决方案没有成功,因为错误是:
Exception Details: System.NullReferenceException: Object reference not set
to an instance of an object.
在这行代码隐藏中:
area.SelectedValue = drv["area"].ToString();
非常感谢您在解决这个问题时给我的任何帮助。
这是我的代码:
if (e.Row.RowType == DataControlRowType.Footer)
{
DataRowView drv = e.Row.DataItem as DataRowView;
DropDownList area = (DropDownList)e.Row.FindControl("area");
area.DataTextField = "area";
area.DataValueField = "area";
area.DataSource = RetrieveCategories();
area.DataBind();
area.SelectedValue = drv["area"].ToString();
}
private DataTable RetrieveCategories()
{
sql = " SELECT DISTINCT area FROM doTable; ";
DataTable dtCategories = new DataTable();
using (OdbcConnection myConnectionString =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
myConnectionString.Open();
using (OdbcCommand cmd = new OdbcCommand(sql, myConnectionString))
{
OdbcDataAdapter adapter = new OdbcDataAdapter(cmd);
adapter.Fill(dtCategories);
}
}
return dtCategories;
}
【问题讨论】:
-
页眉和页脚行没有数据项,因此
drv在您的代码中为空。 -
对不起,我听不懂,我需要更换教程吗?
-
您已经更改了它。适用于 GridView 中 DataRow 类型行的内容可能不适用于页脚。这正是您的情况 - 教程适用于 DataRow(DataItem 有意义且不为空),而您正在尝试使用 Footer