怎么实现在DataGrid中的一列出现文本框可批量编辑?
解决方案 »
- asp.net使用wcf(宿主为iis)时如何使用站点的session
- 前台获取后台变量的问题请教
- UpdatePanel里有一个GridView,内有按钮,点击,后出来弹出一个模式窗体,这应该怎么做?
- 如何在以下这种情况,点击链接后,返回当前页的顶端?
- 表格里的内容如何按一定顺序在客户端显示出来??
- 如何给listbox加上dbclick事件?
- Application[""] 赋值 的地方看不到
- 小弟初学.NET 想请教一个问题,还请大家给我帮助.
- 为什么我在vs.net中打开一个.aspx的文件,不支持自动完成?
- 求去公司面试ASP.net的程序员时碰到的面试问题!在线等待!
- 如何在DataGrid上捕捉鼠标事件
- 关于错误处理
我知道你可以在Template列中加入你需要的空间,并使用<%# Bind('')%>来绑定对应的数据项目,起效果和普通的绑定一样的。
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>为DataGrid的ItemDataBind事件添加处理程序,比如DataGrid_DataBind
然后在DataList_DataBind()方法中这样写:
private void DataGrid_DataBind(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
//判断当前行是不是普通项或交替项,如果是,执行下面的逻辑
if(e.Item.ItemType.Equals(ListItemType.Item)||e.Item.ItemType.Equals(ListItemType.AlternatingItem))
{
((TextBox)e.Item.FindControl("你想找到的控件ID,这里是TextBox1")).Text=(DataRow)e.Item.DataItem["数据源字段名"].ToString();
}这样就可以了。(DataRow)e.Item.DataItem["数据源字段名"].ToString()中的DataRow是当数据源是DataTable的一行时的写法。如果你的数据源是别的类型,要改成相应类型。
当然,你也可以在HTML中直接绑定TextBox的Text属性是数据源的某个字段。不过我比较喜欢把数据绑定之类的程序都写在后台代码里。这样看起来比较清晰。
用到以下语句
后台:
foreach(DataGridItem dgi in dg.Items)
{
int id=Convert.ToInt32(dg.DataKeys[(int)dgi.ItemIndex]);
int strtb1=Convert.ToInt32(((TextBox)dgi.FindControl("tb1")).Text.Trim());
int strtb2=Convert.ToInt32(((TextBox)dgi.FindControl("tb2")).Text.Trim());
string updateString="update shop_books set huiyuanjia="+strtb1+",yeshu="+strtb2+"where bookid="+id;
comm.CommandText=updateString;
comm.ExecuteNonQuery();
}
前台:<asp:datagrid id="dg" runat="server" DataKeyField="bookid" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="bookid" ItemStyle-HorizontalAlign="Center" HeaderText="书编号" />
<asp:BoundColumn DataField="bookname" HeaderText="书名" />
<asp:TemplateColumn HeaderText="huiyuanjia">
<ItemTemplate>
<asp:TextBox runat="server" id="tb1" Text='<%# DataBinder.Eval(Container.DataItem,"huiyuanjia")%>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="tejiabook">
<ItemTemplate>
<asp:CheckBox ID="cb1" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="yeshu">
<ItemTemplate>
<asp:TextBox runat="server" id="tb2" Text='<%# DataBinder.Eval(Container.DataItem,"yeshu")%>'/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="iskucunjimian">
<ItemTemplate>
<asp:CheckBox ID="cb2" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>有些列你用不上自己选啊