关于Datagird的一个小问题
一个Datagrid
前台代码:
<asp:BoundColumn ReadOnly="true" DataField="Id">
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="ABC">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "TypeName").ToString()%>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label2" runat="server" Text="" ></asp:Label>
<asp:TextBox ID="txt_TypeName" runat="server" ></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn CancelText="取消" EditText="编辑" UpdateText="更新"></asp:EditCommandColumn>
后台代码:
public void edit(object sender, DataGridCommandEventArgs e)
{
Label Label2 = (Label)Datagrid1.Items[e.Item.ItemIndex].Cells[1].Controls[0];
Label2.Text = "7";
}
程序运行到Label2.Text = "7";这一句报错,意思是没找到Label2这个控件,请问这个问题应该如何解决?
[解决办法]
参考正确的html代码:
<asp:TemplateColumn>
<EditItemTemplate>
<asp:LinkButton ID="lbkEditUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton>
<asp:LinkButton ID="lnkEditCancel" runat="server" CausesValidation="True" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="lblEdit" runat="server" Text="Edit" CommandName="Edit"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
[解决办法]
<asp:GridView ID="GridView1" runat="server" Width="100%" CellPadding="4" ForeColor="#333333"
AutoGenerateColumns="False" AllowPaging="True" DataKeyNames="id" GridLines="None"
OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit"
OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" >
<Columns>
<asp:TemplateField HeaderText="编号" HeaderStyle-Width="15%">
<ItemTemplate>
<%# Eval("id")%>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="生产企业名称" HeaderStyle-Width="30%">
<ItemTemplate>
<%# Eval("name")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="name" Text='<%# Eval("name") %>' runat="server" />
</EditItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="生产企业编码" HeaderStyle-Width="20%">
<ItemTemplate>
<%# Eval("code")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="code" Text='<%# Eval("code") %>' runat="server" />
</EditItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" EditText="编辑" HeaderText="操作" HeaderStyle-Width="8%" />
<asp:TemplateField ShowHeader="False" HeaderStyle-Width="8%">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" OnClientClick="return confirm('确认删除吗?')" runat="server"
CausesValidation="False" CommandName="Delete" Text="删除"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
GridViewBind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
GridViewBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id = int.Parse(GridView1.DataKeys[e.RowIndex].Values[0].ToString().Trim());
try
{
bll.Delete(id);
Response.Write("<script>alert('删除数据成功!')</script>");
GridView1.EditIndex = -1;
GridViewBind();
}
catch
{
Response.Write("<script>alert('删除数据失败!')</script>");
return;
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridViewBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
T_QYBM model = new T_QYBM();
model.ID = int.Parse(GridView1.DataKeys[e.RowIndex].Values[0].ToString().Trim());
model.NAME = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("name")).Text;
model.CODE = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("code")).Text;
model.BZ1 = "";
model.BZ2 = "";
model.BZ3 = "";
try
{
bll.Update(model);
Response.Write("<script>alert('修改数据成功!')</script>");
GridView1.EditIndex = -1;
GridViewBind();
}
catch
{
Response.Write("<script>alert('修改数据失败!')</script>");
return;
}
}