问题是不同的,因为错误只出现在特定条件和我解释原因的地方。请仔细阅读问题。
这是HTML
模式行DropDownList
上GridView
的输出EditItemTemplate
:
<input type="hidden" name="gvProducts$ctl09$hdnArea" id="gvProducts_hdnArea_7" value="M4" />
<select name="gvProducts$ctl09$Area" id="gvProducts_Area_7" class="ddl_Class_new" style="background-color:Orange;">
<option value="M1">M1</option>
<option value="M2">M2</option>
<option value="M3">M3</option>
<option value="M4">M4</option>
<option value="M5">M5</option>
<option value="M6">M6</option>
<option value="M7">M7</option>
<option selected="selected" value="M4">M4</option>
</select>
生成列表并在DropDowmList
事件中填充RowDataBound
:
if (e.Row.RowType == DataControlRowType.DataRow && gvProducts.EditIndex == e.Row.RowIndex)
{
DropDownList ddlCities = (DropDownList)e.Row.FindControl("Area");
HiddenField hdnval = (HiddenField)e.Row.FindControl("hdnArea");
string query = " Select distinct Area ";
query += " from tbl_area WHERE Left(area,1) = 'M'; ";
OdbcCommand cmd = new OdbcCommand(query);
ddlCities.DataSource = GetData(cmd);
ddlCities.DataTextField = "Area";
ddlCities.DataValueField = "Area";
ddlCities.DataBind();
ddlCities.Items.FindByValue(hdnval.Value).Selected = true;
}
在这种情况下,我没有问题,并且成功地编辑了感兴趣的行。
但我可以在GridView
的另一行中找到第二种情况:
<input type="hidden" name="gvProducts$ctl09$hdnArea" id="gvProducts_hdnArea_6" value="I9" />
<select name="gvProducts$ctl09$Area" id="gvProducts_Area_6" class="ddl_Class_new" style="background-color:Orange;">
<option value="I1">I1</option>
<option value="I9">I9</option>
<option selected="selected" value="I9">I9</option>
</select>
如果尝试编辑此行,我会收到错误
对象引用未设置为对象的实例。
因为在RowDataBound
事件的查询中,我只搜索:
Left(area,1) = 'M'
如何解决这个问题?
请帮帮我,谢谢你。