你绑定DataGrid的时候肯定没有绑定数据库中主键。给你个例子看看:
cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(ConfigurationSettings.AppSettings["ds"]));
string strSQL="select * from material,sort_material,storage where material.sort_num=sort_material.sort_num and storage.storage_num=material.storage_num order by m_num";
da=new OleDbDataAdapter(strSQL,cn);
ds=new DataSet();
cn.Open();
da.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataKeyField="m_num";//最好是数据库中的主键字段
DataGrid1.DataBind();
cn.Close();//更新数据库
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
TextBox mytb1=(TextBox)e.Item.Cells[1].Controls[0];
TextBox mytb2=(TextBox)e.Item.Cells[2].Controls[0];
TextBox mytb3=(TextBox)e.Item.Cells[3].Controls[0];
TextBox mytb4=(TextBox)e.Item.Cells[5].Controls[0];
cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(ConfigurationSettings.AppSettings["ds"]));
string strSQL="update material set m_shape='"+mytb1.Text+"',m_price="+mytb2.Text+",m_stocks="+mytb3.Text+",p_name='"+mytb4.Text+"' where m_num="+DataGrid1.DataKeys[(int)e.Item.ItemIndex];?//取得你要的值。
cm=new OleDbCommand(strSQL,cn);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
DataGrid1.EditItemIndex=-1;
getdata();
}
cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(ConfigurationSettings.AppSettings["ds"]));
string strSQL="select * from material,sort_material,storage where material.sort_num=sort_material.sort_num and storage.storage_num=material.storage_num order by m_num";
da=new OleDbDataAdapter(strSQL,cn);
ds=new DataSet();
cn.Open();
da.Fill(ds);
DataGrid1.DataSource=ds;
DataGrid1.DataKeyField="m_num";//最好是数据库中的主键字段
DataGrid1.DataBind();
cn.Close();//更新数据库
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
TextBox mytb1=(TextBox)e.Item.Cells[1].Controls[0];
TextBox mytb2=(TextBox)e.Item.Cells[2].Controls[0];
TextBox mytb3=(TextBox)e.Item.Cells[3].Controls[0];
TextBox mytb4=(TextBox)e.Item.Cells[5].Controls[0];
cn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(ConfigurationSettings.AppSettings["ds"]));
string strSQL="update material set m_shape='"+mytb1.Text+"',m_price="+mytb2.Text+",m_stocks="+mytb3.Text+",p_name='"+mytb4.Text+"' where m_num="+DataGrid1.DataKeys[(int)e.Item.ItemIndex];?//取得你要的值。
cm=new OleDbCommand(strSQL,cn);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
DataGrid1.EditItemIndex=-1;
getdata();
}
解决方案 »
- GridView实现用“...”代替超长字符串的问题
- 求.NET的FTP双传文件的完整代码
- b页面怎么获得a页面表单提交的数据?
- 注册发邮件如何实现?
- 执行存储过程的错误提示??
- 请问在oracle9.02下开发的asp.net程序能访问oracle9.01数据库吗?
- ◆◇◆ 由于启动用户实例的进程出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。 ◆◇◆
- 同一个项目可否用两种语言C#和Vb.net写?
- 读文本文件中汉字的问题 ̄ ̄ ̄(在线等 ̄ ̄)
- 如何将winform控件添加到webform中?
- 200分請教!分不夠再加!急!急!急!
- 救助!!我在用水晶报表的内置参数,并在前台web表单传值给 这个参数的时候报错。。清高手指点
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#CC3333"></SelectedItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#333333"></HeaderStyle>
<FooterStyle ForeColor="Black" BackColor="#CCCC99"></FooterStyle>
<Columns>
<asp:ButtonColumn DataTextField="F_TitleName" HeaderText="职位" CommandName="Select"></asp:ButtonColumn>
<asp:BoundColumn DataField="F_Count" HeaderText="人数"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="White"></PagerStyle>
</asp:DataGrid>