protected void gv_MatTemp_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决!
DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName"); DataSet thisDS = (DataSet)this.ViewState["Items"];
for (int i = 0; i < thisDS.Tables[0].Rows.Count; i++)
{
string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim();
ddl_ItemName.Items.Add(thisItemName);
}
}
}
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决!
DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName"); DataSet thisDS = (DataSet)this.ViewState["Items"];
for (int i = 0; i < thisDS.Tables[0].Rows.Count; i++)
{
string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim();
ddl_ItemName.Items.Add(thisItemName);
}
}
}
for (int i = 0; i < thisDS.Tables[0].Rows.Count; i++)
{
ListItem item = new ListItem(thisDS.Tables[0].Rows[i][0].ToString().Trim(), thisDS.Tables[0].Rows[i][1].ToString().Trim(); );
ddl_ItemName.Items.Add(item);
}
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
}
这样找下
DropDownList ddl_ItemName = (DropDownList)e.Row.FindControl("ddl_ItemName");
然后你看下,ddl_ItemName与在控件里的dropdownlist的ID是不是一致的.
<asp:TemplateField HeaderText="會計科目">
<EditItemTemplate>
<asp:DropDownList ID="ddl_ItemName" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lbl_ItemName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"ITEM_NAME")%>'></asp:Label>
</ItemTemplate>
<HeaderStyle Font-Bold="False" />
</asp:TemplateField>
protected void gv_MatTemp_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决!
DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName");
DataSet thisDS = (DataSet)this.ViewState["Items"];
for (int i = 0; i < thisDS.Tables[0].Rows.Count; i++)
{
string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim();
ddl_ItemName.Items.Add(thisItemName);
}
}
}
2.已经知道控件名,直接DropDownList ddl_ItemName = (DropDownList)e.Row.FindControl("ddl_ItemName"); 即可,不用管单元格
<asp:DropDownList ID="ddl_ItemName" runat="server">
</asp:DropDownList>
</EditItemTemplate>
改为放在<ItemTemplate>中就可以了:
<ItemTemplate>
<asp:DropDownList ID="ddl_ItemName" runat="server">
</asp:DropDownList> </ItemTemplate>
1.<EditItemTemplate>
<asp:DropDownList ID="ddl_ItemName" runat="server"> </asp:DropDownList>
</EditItemTemplate>
只有在编辑情况下才会选择数据
2.不+单元格,我也试过不行!
<ItemTemplate>
<%# Eval("xx")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddl_ItemName" runat="server" />
</EditItemTemplate>
</asp:TemplateField>这个是前台的代码
因为只有编辑状态下才可能创建你要找的DropDownList
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit)
{
//ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决!
DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName");
DataSet thisDS = (DataSet)this.ViewState["Items"];
for (int i = 0; i < thisDS.Tables[0].Rows.Count; i++)
{
string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim();
ddl_ItemName.Items.Add(thisItemName);
}
}
黨e.Row.RowType == DataControlRowType.DataRow 成立
ddl_ItemName 還是null