(论坛答疑点滴)联合主键的情况怎么在DataGrid中利用DataKeys定位记录?


(论坛答疑点滴)联合主键的情况怎么在DataGrid中利用DataKeys定位记录?

比如表中三个字段
key1 int,key2 int,item varchar(50)
前面2个字段联合主键

前台代码:

<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" DataKeyField="DoubleKey">
                
<Columns>
                    
<asp:BoundColumn DataField="item" HeaderText="item"></asp:BoundColumn>
                    
<asp:ButtonColumn CommandName="del" Text="删除"></asp:ButtonColumn>
                
</Columns>
            
</asp:DataGrid>


后台代码:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace csdn2
{
    
public class WebForm20 : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataGrid DataGrid1;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
if(!IsPostBack)
            
{
                SetBind();
            }

        }

        
private void SetBind()
        
{
            SqlConnection conn
=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
            SqlDataAdapter da
=new SqlDataAdapter("select * from doublekey",conn);
            DataSet ds
=new DataSet();
            da.Fill(ds);
            DataTable dt
=ds.Tables[0];
            DataColumn dc
=new DataColumn("DoubleKey",typeof(string),"key1+'#'+key2");
            dt.Columns.Add(dc);
            
this.DataGrid1.DataSource=dt;
            
this.DataGrid1.DataBind();
        }

        
Web 窗体设计器生成的代码

        
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        
{
            
if(e.CommandName=="del")
            
{
                SqlConnection conn
=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); 
                SqlCommand comm
=new SqlCommand("delete from doublekey where key1=@key1 and key2=@key2",conn); 
                SqlParameter parm1
=new SqlParameter("@key1",SqlDbType.Int);
                SqlParameter parm2
=new SqlParameter("@key2",SqlDbType.Int); 
                
string [] keys=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString().Split('#');
                parm1.Value
=keys[0];
                parm2.Value
=keys[1];
                comm.Parameters.Add(parm1);
                comm.Parameters.Add(parm2); 
                conn.Open(); 
                comm.ExecuteNonQuery(); 
                conn.Close(); 
                SetBind(); 
            }

        }

    }

}

posted on 2005-04-19 11:58 lovecherry 阅读(200) 评论(2)  编辑 收藏

评论

# re: (论坛答疑点滴)联合主键的情况怎么在DataGrid中利用DataKeys定位记录? 2005-04-19 12:14 devecom

我觉得你的表设计可能有问题,应该设置一个唯一的关键字字段,
和业务无关。   

# re: (论坛答疑点滴)联合主键的情况怎么在DataGrid中利用DataKeys定位记录? 2005-04-19 12:22 ttyp

是微软的设计有问题   

 re: (论坛答疑点滴)联合主键的情况怎么在DataGrid中利用DataKeys定位记录? 优质内容筛选与推荐>>
1、tab左右箭头切换(修改后)
2、Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
3、关于C语言的问卷调查
4、前端技能汇总
5、mysql变更数据的捕获和入库


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn