我在使用中遇到几个问题。
1、使用编辑,修改DataGrid中的值,不能成功修改,用Visual c#跟踪发现没有将修改的值提交到数据库中,而是提交的原来绑定的值。
2、使用编辑,怎么设置DataGrid中用来编辑值的TextBox的宽度和可输入的字节长度;代码如下:
html<asp:datagrid id="DataGrid1" runat="server" Width="590px" OnEditCommand="DataGrid_EditCommand" OnUpdateCommand="DataGrid_UpdateCommand" OnCancelCommand="DataGrid_CancelCommand" AutoGenerateColumns="False">
  <HeaderStyle BackColor="#409DDE"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="id" ReadOnly="True" HeaderText="编号">
<HeaderStyle HorizontalAlign="Center" Width="30px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="c_busi_desc" HeaderText="分析主题">
<HeaderStyle HorizontalAlign="Center" Width="140px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="c_billing_month" HeaderText="回退帐务月">
<HeaderStyle HorizontalAlign="Center" Width="80px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="c_region_id" HeaderText="回退地区">
<HeaderStyle HorizontalAlign="Center" Width="60px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="c_file_date" HeaderText="文件名日期">
<HeaderStyle HorizontalAlign="Center" Width="80px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="c_numbers" HeaderText="文件流水号">
<HeaderStyle HorizontalAlign="Center" Width="70px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="c_level" HeaderText="优先级">
<HeaderStyle HorizontalAlign="Center" Width="50px"></HeaderStyle>
</asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑">
<HeaderStyle HorizontalAlign="Center" Width="80px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
</asp:datagrid>
c#
public void DataGrid_EditCommand(Object sender,DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
}public void DataGrid_CancelCommand(Object sender,DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
}public void DataGrid_UpdateCommand(Object sender,DataGridCommandEventArgs e)
{
int key = Int32.Parse(e.Item.Cells[0].Text);
string substr = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
string monthstr = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
string regstr = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
string datestr = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
string numstr = ((TextBox)e.Item.Cells[5].Controls[0]).Text;
int levstr = Int32.Parse(((TextBox)e.Item.Cells[6].Controls[0]).Text);string CnnStr = System.Configuration.ConfigurationSettings.AppSettings["Connectingstring"].ToString();
string Sql = "update sys_cancel_config set c_busi_desc = '"+substr+"',c_billing_month = '"+monthstr+"',c_region_id='"+regstr+"',c_file_date='"+datestr+"',c_numbers='"+numstr+"',c_level='"+levstr+"' where id='"+key+"'";
SqlHelper.ExecuteNonQuery(CnnStr,CommandType.Text,Sql);
DataGrid1.EditItemIndex = -1;
}

解决方案 »

  1.   

    DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
    DataGrid1.DataSource= .....//试试
    DataGrid1.DataBind();
      

  2.   

    改了不行,我遇到的问题是修改DataGrid中的值后,下面的变量得到的还是以前从数据库中得到的值。
    string substr = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
    string monthstr = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
    string regstr = ((TextBox)e.Item.Cells[3].Controls[0]).Text;
    string datestr = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
    string numstr = ((TextBox)e.Item.Cells[5].Controls[0]).Text;
    int levstr = Int32.Parse(((TextBox)e.Item.Cells[6].Controls
      

  3.   

    我知道了, 是你的datagrid没有绑定在if(!IsPostBack)中,