<dx:ASPxGridLookup ID="GridLookup" runat="server" DataSourceID=""
ClientInstanceName="gridLookup" KeyFieldName="UserId"
Width="250px" TextFormatString="{0}" SelectionMode="Multiple"
MultiTextSeparator="," AutoGenerateColumns="False" >
<Columns>
<dx:GridViewCommandColumn ShowSelectCheckbox="True" />
<dx:GridViewDataColumn FieldName="UserName" Caption="姓名"/>
<dx:GridViewDataColumn FieldName="DeptName" Caption="部门">
</Columns>
</dx:ASPxGridLookup>
选择以后页面的展现形式为:刘德华,章子怡,郭富城
其对应的“UserId”的集合为:liudehua,zhangziyi,guofucheng
在后台代码中,我们可以通过“GridLookup.Text”,获取TextBox中的信息。但是,我们通常在关系表中保存的是“UserName”对应的“UserId”,也就是主键,因此我们得获取其对应的“UserId”的集合。有ASPxGridLookup 控件提供了一个方法,“GridLookup.Value”,但是这个方法只适用于"Single Selection"模式,在“Multiple Selection”模式中,只能返回第一个“UserId”的值,这显然是行不通的。
在尝试了ASPxGridLookup其下所有的方法和属性之后,终于找到了在“Multiple Selection”模式中获取“KeyFieldName”集合的方法,如下:
List<object> list = GridLookup.GridView.GetSelectedFieldValues("UserId");
“GetSelectedFieldValues”是个重载函数,当参数为指定的字段名“UserId”的时候,其返回为泛型为“object”的List变量,“object”中存放的就是“Userid”的值,“List”为其集合。
另外,“GetSelectedFieldValues”的参数也可以是string[]类型,如:
List<object> list = GridLookup.GridView.GetSelectedFieldValues({"UserId ", "UserName"});
foreach(object[] obj in list){
Response.Write(obj[0].ToString() + " - " + obj[1].ToString() + "<br />");
}
输出结果:
liudehua - 刘德华
zhangziyi - 章子怡
guofucheng - 郭富城