Developer Express ASPxGridView联合主键

      这段时间刚刚接触Developer Express控件就遇到一个很纠结的问题,在绑定由多表查询生成的数据源时,无法获取ASPxGridView的选中项,也就是在我的ASPxGridView列表中有checkbox复选框,后台通过复选框来获取ASPxGridView列表的选中项,但是由于我的数据源是多表查询生成的,所以在我给 ASPxGridView KeyFieldName属性设置了主键时,点击列表中的复选框时,后台无法获取列表的选中项。这类问题如果在ASPxGridView的数据源为单表或是试图时是不会出现的。纠结了很久之后终于弄清楚了,原因是在我进行数据绑定的时候,即使KeyFieldName数据不赋值是程序也不会报错,但是在当我点击复选框时,Developer Express的机制是重新执行绑定数据源方法,当程序再次绑定的时候就会找不到keyFieldName这个属性的值,所以程序会报错,解决方法有两种,

     第一种是在SQL语句中返回数据表中的联合主键,把两个主键拼接成一个别名的主键返回,在前台把返回的主键赋值到KeyFieldName上,就可以了。

     第二种方法在后台拼接keyFieldName的值,前台随便给KeyFieldName一个值(这里我给的值是CompositeKey),在后台添加事件ASPxGridView的事件

 protected void ASPxGdResearchUniversityAdd_CustomUnboundColumnData(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDataEventArgs e)    

    {        

           if (e.Column.FieldName == "CompositeKey")       

              {            

                  string ResearchID = Convert.ToString(e.GetListSourceFieldValue("ResearchID"));            

                  string TutorID = Convert.ToString(e.GetListSourceFieldValue("TutorID"));            

                 e.Value = ResearchID + "-" + TutorID;        

            }

    }

这两种方式都要在ASPxGridView中添加 如下代码

<dx:GridViewDataTextColumn FieldName="CompositeKey" Caption="主键ID" Visible="false">
                                    </dx:GridViewDataTextColumn>

 

希望这篇文章能对刚接触Developer Express控件的同学有用处

转载于:https://www.cnblogs.com/wanghuan1986/archive/2012/11/20/2778570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值