用datagrid控件 用到以下语句 后台: 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;
我知道你可以在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>有些列你用不上自己选啊