首先,在DataGrid有一模版列,模版列中ItemTemplate中放置HyperLink控件,EditItemTemplate中可放入一TextBox,html中的相應代碼爲
<asp:TemplateColumn HeaderText="報表名稱">
<ItemTemplate>
<asp:HyperLink id=Hyperlink1 runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.rptlink")%>' Target="_self">
<%# DataBinder.Eval(Container, "DataItem.name") %>
</asp:HyperLink>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=txtName runat="server" Width="280" Text='<%#DataBinder.Eval(Container.DataItem,"name")%>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<ItemTemplate>
<asp:HyperLink id=Hyperlink1 runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.rptlink")%>' Target="_self">
<%# DataBinder.Eval(Container, "DataItem.name") %>
</asp:HyperLink>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=txtName runat="server" Width="280" Text='<%#DataBinder.Eval(Container.DataItem,"name")%>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
後臺DataGrid的更新事件
//更新
private void dgWTJ_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string rptname = ((TextBox)(e.Item.Cells[0].Controls[1])).Text;
long reportid = long.Parse(e.Item.Cells[5].Text);
if (rptname == "")
{
this.lblerr.Text = "提示信息:報表名稱不能爲空!";
}
else
{
//報表重命名,參數爲報表名稱,報表ID
this.lblerr.Text = "";
hbbu.RenameReport(rptname,reportid);
this.dgWTJ.EditItemIndex = -1;
BindWTJList();
}
}
private void dgWTJ_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string rptname = ((TextBox)(e.Item.Cells[0].Controls[1])).Text;
long reportid = long.Parse(e.Item.Cells[5].Text);
if (rptname == "")
{
this.lblerr.Text = "提示信息:報表名稱不能爲空!";
}
else
{
//報表重命名,參數爲報表名稱,報表ID
this.lblerr.Text = "";
hbbu.RenameReport(rptname,reportid);
this.dgWTJ.EditItemIndex = -1;
BindWTJList();
}
}
在DataGrid中顯示但不需要修改的列可設置爲只讀。