<asp:GridView ID="GidTPE" runat="server" AutoGenerateColumns="false" OnRowCommand="GidTPE_OnRowCommand"
DataKeyNames="UserID" onrowdeleting="GidTPE_RowDeleting"
onrowdatabound="GidTPE_RowDataBound" Height="131px" Width="667px"
onrowediting="GidTPE_RowEditing" >
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="LState" Text='<%# Eval("Status") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="HDFState" runat="server" Value='<%# Eval("State") %>' />
<asp:DropDownList ID="DDLStatus" runat="server" >
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
cs:
protected void GidTPE_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlState = (DropDownList)e.Row.FindControl("DDLStatus");
DataSet DTState = new DataSet();
DTState = bllum.GetListByUserState(""); ddlState.DataSource = DTState; // 出错:未将对象引用设置到对象的实例 ddlState.DataValueField = DTState.Tables[0].Columns[0].ColumnName;
ddlState.DataTextField = DTState.Tables[0].Columns[1].ColumnName;
ddlState.DataBind();
ddlState.SelectedValue = e.Row.FindControl("HDFState").ToString();
}请懂的人帮忙看看呀,谢啦~~~~
DataKeyNames="UserID" onrowdeleting="GidTPE_RowDeleting"
onrowdatabound="GidTPE_RowDataBound" Height="131px" Width="667px"
onrowediting="GidTPE_RowEditing" >
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="LState" Text='<%# Eval("Status") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="HDFState" runat="server" Value='<%# Eval("State") %>' />
<asp:DropDownList ID="DDLStatus" runat="server" >
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
cs:
protected void GidTPE_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlState = (DropDownList)e.Row.FindControl("DDLStatus");
DataSet DTState = new DataSet();
DTState = bllum.GetListByUserState(""); ddlState.DataSource = DTState; // 出错:未将对象引用设置到对象的实例 ddlState.DataValueField = DTState.Tables[0].Columns[0].ColumnName;
ddlState.DataTextField = DTState.Tables[0].Columns[1].ColumnName;
ddlState.DataBind();
ddlState.SelectedValue = e.Row.FindControl("HDFState").ToString();
}请懂的人帮忙看看呀,谢啦~~~~
FindControl之后,可以给模板列的下拉添加项
for (int i = 0; i < ddlModel.Items.Count; i++)
{
ddlxModel.Items.Add(new ListItem(ddlModel.Items[i].Text, ddlModel.Items[i].Value));
}
if(ddlState!=null)
{
ddlState.DataSource = DTState.Tables[0];
ddlState.DataValueField = DTState.Tables[0].Columns[0].ColumnName;
ddlState.DataTextField = DTState.Tables[0].Columns[1].ColumnName;
ddlState.DataBind();//ddlState.SelectedValue = e.Row.FindControl("HDFState").ToString(); //这句写错了,先转换控件,再取value
}