ASPxGridView自定义列和基本事件-极品

DevExpress ASP.NET 使用经验谈(8)-ASPxGridView自定义列和基本事件

 

weixin_30305735 2014-12-11 11:36:00 发布

阅读量243 收藏

点赞数

文章标签: 数据库 ui xhtml

版权

为演示本节示例,我们在原来Users表增加【性别Gender、【兴趣爱好Hobbies,【CreateTime创建时间】,【ModifyTime修改时间这4个字段,

00001. 

ALTER TABLE [dbo].[Users] add [Gender] varchar(10) NULL

00002. 

00003. 

GO

00004. 

00005. 

ALTER TABLE [dbo].[Users] add [Hobbies] varchar(50) NULL

00006. 

00007. 

GO

00008. 

00009. 

ALTER TABLE [dbo].[Users] add [CreateTime] datetime NULL

00010. 

00011. 

GO

00012. 

00013. 

ALTER TABLE [dbo].[Users] add [ModifyTime] datetime NULL

00014. 

完成建表语句如下:

00001. 

CREATE TABLE [dbo].[Users] (

00002. 

00003. 

    [UserID] int IDENTITY(1, 1) NOT NULL,

00004. 

00005. 

    [UserName] nvarchar(50) NULL,

00006. 

00007. 

    [FirstName] nvarchar(50) NULL,

00008. 

00009. 

    [LastName] nvarchar(50) NULL,

00010. 

00011. 

    [MiddleName] nvarchar(50) NULL,

00012. 

00013. 

    [EmailID] nvarchar(50) NULL,

00014. 

00015. 

    [Gender] varchar(10) NULL,

00016. 

00017. 

    [Hobbies] varchar(50) NULL,

00018. 

00019. 

    [ModifyTime] datetime NULL,

00020. 

00021. 

    [CreateTime] datetime NULL,

00022. 

00023. 

    CONSTRAINT [PK_Users] PRIMARY KEY ([UserID])

00024. 

00025. 

)

00026. 

【性别】:我们选择ASPxGridView的GridViewDataComboBoxColumn列类型,通过如下代码实现下拉选择性别“男”和“女”。

00001. 

 <dx:GridViewDataComboBoxColumn FieldName="Gender" VisibleIndex="6" Caption="性别" Width="80px">

00002. 

00003. 

                        <EditFormSettings VisibleIndex="4" Visible="True" Caption="性别" />

00004. 

00005. 

                        <CellStyle HorizontalAlign="Center" />

00006. 

00007. 

                        <HeaderStyle HorizontalAlign="Center" />

00008. 

00009. 

                        <PropertiesComboBox>

00010. 

00011. 

                            <Items>

00012. 

00013. 

                                <dx:ListEditItem Text="男" Value="男" />

00014. 

00015. 

                                <dx:ListEditItem Text="女" Value="女" />

00016. 

00017. 

                            </Items>

00018. 

00019. 

                        </PropertiesComboBox>

00020. 

00021. 

</dx:GridViewDataComboBoxColumn>

00022. 

 【兴趣爱好】:通过编辑模板EditItemTemplate,建立自定义的兴趣爱好CheckBox选项的模板列。

00001. 

 <dx:GridViewDataTextColumn FieldName="Hobbies" VisibleIndex="7" Caption="兴趣爱好" Width="100px">

00002. 

00003. 

                        <EditFormSettings VisibleIndex="5" Visible="True" Caption="兴趣爱好" />

00004. 

00005. 

                        <CellStyle HorizontalAlign="Center" />

00006. 

00007. 

                        <HeaderStyle HorizontalAlign="Center" />

00008. 

00009. 

                        <EditItemTemplate>

00010. 

00011. 

                            <table border="0">

00012. 

00013. 

                                <tr>

00014. 

00015. 

                                    <td>

00016. 

00017. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H1" runat="server" ClientInstanceName="cb_hob1" Text="阅读" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00018. 

00019. 

                                        </dx:ASPxCheckBox>

00020. 

00021. 

                                    </td>

00022. 

00023. 

                                    <td> </td>

00024. 

00025. 

                                    <td>

00026. 

00027. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H2" ClientInstanceName="cb_hob2" runat="server" Text="思考" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00028. 

00029. 

                                        </dx:ASPxCheckBox>

00030. 

00031. 

                                    </td>

00032. 

00033. 

                                    <td> </td>

00034. 

00035. 

                                    <td>

00036. 

00037. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H3" runat="server" ClientInstanceName="cb_hob3" Text="运动" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00038. 

00039. 

                                        </dx:ASPxCheckBox>

00040. 

00041. 

                                    </td>

00042. 

00043. 

                                    <td> </td>

00044. 

00045. 

                                    <td>

00046. 

00047. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H4" runat="server" ClientInstanceName="cb_hob4" Text="社交" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00048. 

00049. 

                                        </dx:ASPxCheckBox>

00050. 

00051. 

                                    </td>

00052. 

00053. 

                                </tr>

00054. 

00055. 

                            </table>

00056. 

00057. 

                        </EditItemTemplate>

00058. 

00059. 

</dx:GridViewDataTextColumn>

00060. 

 

 创建时间】与【修改时间】在界面上均不显示,分别记录每条数据的创建时间和最后一次修改时间。

00001. 

 <dx:GridViewDataDateColumn FieldName="CreateTime" VisibleIndex="7" Caption="创建时间" Width="100px" Visible="false">

00002. 

00003. 

                        <EditFormSettings VisibleIndex="5" Visible="False" Caption="创建时间" />

00004. 

00005. 

                        <CellStyle HorizontalAlign="Center" />

00006. 

00007. 

                        <HeaderStyle HorizontalAlign="Center" />

00008. 

00009. 

                    </dx:GridViewDataDateColumn>

00010. 

00011. 

<dx:GridViewDataDateColumn FieldName="ModifyTime" VisibleIndex="7" Caption="修改时间" Width="100px" Visible="false">

00012. 

00013. 

                        <EditFormSettings VisibleIndex="5" Visible="True" Caption="修改时间" />

00014. 

00015. 

                        <CellStyle HorizontalAlign="Center" />

00016. 

00017. 

                        <HeaderStyle HorizontalAlign="Center" />

00018. 

00019. 

</dx:GridViewDataDateColumn>

00020. 

关于这4个字段的后台赋值,我们暂先放一边,来看一下,目前编辑界面的效果。

 

                                                                         图一 添加字段后的编辑页

【性别】字段,可以直接下拉选择并保存,但是【兴趣爱好】选项选取后保存无效,【创建时间】,【修改时间】因为并未开放编辑,且后台并未赋值,

所以仍为空值。那么如何才能保存这三个字段呢?

这里我们就要利用ASPxGridView的OnRowInserting事件、OnRowUpdating事件来执行赋值和保存。

 

后台OnRowInserting事件代码如下:

00001. 

 protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)

00002. 

00003. 

    {

00004. 

00005. 

        //在RowInserting时,将当前时间赋值给“创建时间列”CreateTime赋值

00006. 

00007. 

        e.NewValues["CreateTime"] = DateTime.Now;

00008. 

00009. 

 

00010. 

00011. 

        GridViewDataColumn columnHobbies = ASPxGridView1.Columns["Hobbies"] as GridViewDataColumn; //取出GridView的Column

00012. 

00013. 

        //通过ASPxGridView1.FindEditRowCellTemplateControl找出自定义的CheckBox

00014. 

00015. 

        ASPxCheckBox cbH1 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H1") as ASPxCheckBox);

00016. 

00017. 

        ASPxCheckBox cbH2 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H2") as ASPxCheckBox);

00018. 

00019. 

        ASPxCheckBox cbH3 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H3") as ASPxCheckBox);

00020. 

00021. 

        ASPxCheckBox cbH4 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H4") as ASPxCheckBox);

00022. 

00023. 

 

00024. 

00025. 

        ArrayList listHobbies = new ArrayList();

00026. 

00027. 

        if (cbH1.Checked == true)

00028. 

00029. 

        {

00030. 

00031. 

            listHobbies.Add(cbH1.Text);

00032. 

00033. 

        }

00034. 

00035. 

        if (cbH2.Checked == true)

00036. 

00037. 

        {

00038. 

00039. 

            listHobbies.Add(cbH2.Text);

00040. 

00041. 

        }

00042. 

00043. 

        if (cbH3.Checked == true)

00044. 

00045. 

        {

00046. 

00047. 

            listHobbies.Add(cbH3.Text);

00048. 

00049. 

        }

00050. 

00051. 

        if (cbH4.Checked == true)

00052. 

00053. 

        {

00054. 

00055. 

            listHobbies.Add(cbH4.Text);

00056. 

00057. 

        }

00058. 

00059. 

        //通过 e.NewValues["Hobbies"]赋值

00060. 

00061. 

        e.NewValues["Hobbies"] = string.Join(",", listHobbies.ToArray());

00062. 

00063. 

    }

00064. 

 

我们可以通过e.NewValues["列名"]赋值来存取数据,通过ASPxGridView1.FindEditRowCellTemplateControl方法,可以找到模板列中的

自定义控件。

同理,后台RowUpdating事件如下:

00001. 

 protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)

00002. 

00003. 

    {

00004. 

00005. 

        //在RowUpdating时,将当前时间赋值给“创建时间列”ModifyTime赋值

00006. 

00007. 

        e.NewValues["ModifyTime"] = DateTime.Now;

00008. 

00009. 

 

00010. 

00011. 

        GridViewDataColumn columnHobbies = ASPxGridView1.Columns["Hobbies"] as GridViewDataColumn;//取出GridView的Column

00012. 

00013. 

        //通过ASPxGridView1.FindEditRowCellTemplateControl找出自定义的CheckBox

00014. 

00015. 

        ASPxCheckBox cbH1 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H1") as ASPxCheckBox);

00016. 

00017. 

        ASPxCheckBox cbH2 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H2") as ASPxCheckBox);

00018. 

00019. 

        ASPxCheckBox cbH3 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H3") as ASPxCheckBox);

00020. 

00021. 

        ASPxCheckBox cbH4 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H4") as ASPxCheckBox);

00022. 

00023. 

 

00024. 

00025. 

        ArrayList listHobbies = new ArrayList();

00026. 

00027. 

        if (cbH1.Checked == true)

00028. 

00029. 

        {

00030. 

00031. 

            listHobbies.Add(cbH1.Text);

00032. 

00033. 

        }

00034. 

00035. 

        if (cbH2.Checked == true)

00036. 

00037. 

        {

00038. 

00039. 

            listHobbies.Add(cbH2.Text);

00040. 

00041. 

        }

00042. 

00043. 

        if (cbH3.Checked == true)

00044. 

00045. 

        {

00046. 

00047. 

            listHobbies.Add(cbH3.Text);

00048. 

00049. 

        }

00050. 

00051. 

        if (cbH4.Checked == true)

00052. 

00053. 

        {

00054. 

00055. 

            listHobbies.Add(cbH4.Text);

00056. 

00057. 

        }

00058. 

00059. 

        //通过 e.NewValues["Hobbies"]赋值

00060. 

00061. 

        e.NewValues["Hobbies"] = string.Join(",", listHobbies.ToArray());

00062. 

00063. 

    }

00064. 

通过上面代码,我们已经能将【兴趣爱好】、【创建时间】、【修改时间】的数据保存到数据库,但是再次编辑时,【兴趣爱好】列数据并未绑定控件,

这时,就需要用到ASPxCheckBox控件的OnInit事件。

00001. 

 <dx:ASPxCheckBox ID="ASPxCheckBox_H2" ClientInstanceName="cb_hob2" runat="server" Text="思考" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00002. 

00003. 

 </dx:ASPxCheckBox>

00004. 

 ASPxCheckBox_Hobbies_Init事件代码如下:

00001. 

    protected void ASPxCheckBox_Hobbies_Init(object sender, EventArgs e)

00002. 

00003. 

    {

00004. 

00005. 

        ASPxCheckBox cblHb = sender as ASPxCheckBox;

00006. 

00007. 

        GridViewEditItemTemplateContainer container = cblHb.NamingContainer as GridViewEditItemTemplateContainer;

00008. 

00009. 

        string strHobbies = string.Empty;

00010. 

00011. 

        if (DataBinder.Eval(container.DataItem, "Hobbies") != null)

00012. 

00013. 

            strHobbies = DataBinder.Eval(container.DataItem, "Hobbies").ToString().Trim();

00014. 

00015. 

 

00016. 

00017. 

        if (strHobbies.Contains(cblHb.Text))

00018. 

00019. 

        {

00020. 

00021. 

            cblHb.Checked = true;

00022. 

00023. 

        }

00024. 

00025. 

    }

00026. 

此时,我们新增一条数据,录入信息如下,点击保存,再次点击编辑图标打开编辑界面,已经显示【兴趣爱好】列的选择状态数据绑定,因为是

新增数据,所以【修改时间】为空。

 

                                                      图二 增加后台取值赋值代码,执行新增并保存后的界面

再次编辑,修改【兴趣爱好】选项,取消“运动“选项,增加”思考“选项,再保存,这时【修改时间】更新。

 

                                                                图三 再执行编辑并保存后的界面

最后贴出完整代码:

1、前台ASPX页面代码:

00001. 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

00002. 

00003. 

 

00004. 

00005. 

<%@ Register Assembly="DevExpress.Xpo.v12.2.Web, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Xpo" TagPrefix="dx" %>

00006. 

00007. 

 

00008. 

00009. 

<%@ Register Assembly="DevExpress.Web.v12.2, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>

00010. 

00011. 

 

00012. 

00013. 

<%@ Register Assembly="DevExpress.Web.v12.2, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>

00014. 

00015. 

 

00016. 

00017. 

<!DOCTYPE html>

00018. 

00019. 

 

00020. 

00021. 

<html xmlns="http://www.w3.org/1999/xhtml">

00022. 

00023. 

<head runat="server">

00024. 

00025. 

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

00026. 

00027. 

    <title></title>

00028. 

00029. 

</head>

00030. 

00031. 

<body>

00032. 

00033. 

    <form id="form1" runat="server">

00034. 

00035. 

        <div>

00036. 

00037. 

            <p>

00038. 

00039. 

                <h1>ASPxGridView自定义列和事件</h1>

00040. 

00041. 

            </p>

00042. 

00043. 

            <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False"

00044. 

00045. 

                OnRowInserting="ASPxGridView1_RowInserting"

00046. 

00047. 

                OnRowUpdating="ASPxGridView1_RowUpdating"

00048. 

00049. 

                DataSourceID="XpoDataSource1" KeyFieldName="UserID" Theme="Aqua">

00050. 

00051. 

                <Columns>

00052. 

00053. 

                    <dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image" Width="80px">

00054. 

00055. 

                        <EditButton Visible="true">

00056. 

00057. 

                            <Image ToolTip="编辑" Url="Assets/images/edit.png"></Image>

00058. 

00059. 

                        </EditButton>

00060. 

00061. 

                        <NewButton Visible="true">

00062. 

00063. 

                            <Image ToolTip="新增" Url="Assets/images/new.png"></Image>

00064. 

00065. 

                        </NewButton>

00066. 

00067. 

                        <DeleteButton Visible="true">

00068. 

00069. 

                            <Image ToolTip="删除" Url="Assets/images/delete.png"></Image>

00070. 

00071. 

                        </DeleteButton>

00072. 

00073. 

                        <UpdateButton Visible="true">

00074. 

00075. 

                            <Image ToolTip="保存" Url="Assets/images/save.gif"></Image>

00076. 

00077. 

                        </UpdateButton>

00078. 

00079. 

                        <CancelButton Visible="true">

00080. 

00081. 

                            <Image ToolTip="取消" Url="Assets/images/cancel.gif"></Image>

00082. 

00083. 

                        </CancelButton>

00084. 

00085. 

                    </dx:GridViewCommandColumn>

00086. 

00087. 

                    <dx:GridViewDataTextColumn FieldName="UserID" ReadOnly="True" VisibleIndex="1" Visible="false">

00088. 

00089. 

                    </dx:GridViewDataTextColumn>

00090. 

00091. 

                    <dx:GridViewDataTextColumn FieldName="UserName" VisibleIndex="2" Caption="用户姓名" >

00092. 

00093. 

                        <EditFormSettings VisibleIndex="2" Visible="True" Caption="用户姓名" />

00094. 

00095. 

                    </dx:GridViewDataTextColumn>

00096. 

00097. 

                    <dx:GridViewDataTextColumn FieldName="FirstName" VisibleIndex="3" Caption="名" Width="80px">

00098. 

00099. 

                        <EditFormSettings VisibleIndex="3" Visible="True" Caption="名" />

00100. 

00101. 

                        <CellStyle HorizontalAlign="Center" />

00102. 

00103. 

                        <HeaderStyle HorizontalAlign="Center" />

00104. 

00105. 

                    </dx:GridViewDataTextColumn>

00106. 

00107. 

                    <dx:GridViewDataTextColumn FieldName="LastName" VisibleIndex="4" Caption="姓" Width="80px">

00108. 

00109. 

                        <EditFormSettings VisibleIndex="4" Visible="True" Caption="姓" />

00110. 

00111. 

                        <CellStyle HorizontalAlign="Center" />

00112. 

00113. 

                        <HeaderStyle HorizontalAlign="Center" />

00114. 

00115. 

                    </dx:GridViewDataTextColumn>

00116. 

00117. 

                    <dx:GridViewDataTextColumn FieldName="MiddleName" VisibleIndex="5" Caption="教名" Width="100px">

00118. 

00119. 

                        <EditFormSettings VisibleIndex="5" Visible="False" Caption="教名" />

00120. 

00121. 

                        <CellStyle HorizontalAlign="Center" />

00122. 

00123. 

                        <HeaderStyle HorizontalAlign="Center" />

00124. 

00125. 

                    </dx:GridViewDataTextColumn>

00126. 

00127. 

                    <dx:GridViewDataComboBoxColumn FieldName="Gender" VisibleIndex="6" Caption="性别" Width="80px">

00128. 

00129. 

                        <EditFormSettings VisibleIndex="4" Visible="True" Caption="性别" />

00130. 

00131. 

                        <CellStyle HorizontalAlign="Center" />

00132. 

00133. 

                        <HeaderStyle HorizontalAlign="Center" />

00134. 

00135. 

                        <PropertiesComboBox>

00136. 

00137. 

                            <Items>

00138. 

00139. 

                                <dx:ListEditItem Text="男" Value="男" />

00140. 

00141. 

                                <dx:ListEditItem Text="女" Value="女" />

00142. 

00143. 

                            </Items>

00144. 

00145. 

                        </PropertiesComboBox>

00146. 

00147. 

                    </dx:GridViewDataComboBoxColumn>

00148. 

00149. 

                    <dx:GridViewDataTextColumn FieldName="Hobbies" VisibleIndex="7" Caption="兴趣爱好" Width="100px">

00150. 

00151. 

                        <EditFormSettings VisibleIndex="5" Visible="True" Caption="兴趣爱好" />

00152. 

00153. 

                        <CellStyle HorizontalAlign="Center" />

00154. 

00155. 

                        <HeaderStyle HorizontalAlign="Center" />

00156. 

00157. 

                        <EditItemTemplate>

00158. 

00159. 

                            <table border="0">

00160. 

00161. 

                                <tr>

00162. 

00163. 

                                    <td>

00164. 

00165. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H1" runat="server" ClientInstanceName="cb_hob1" Text="阅读" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00166. 

00167. 

                                        </dx:ASPxCheckBox>

00168. 

00169. 

                                    </td>

00170. 

00171. 

                                    <td> </td>

00172. 

00173. 

                                    <td>

00174. 

00175. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H2" ClientInstanceName="cb_hob2" runat="server" Text="思考" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00176. 

00177. 

                                        </dx:ASPxCheckBox>

00178. 

00179. 

                                    </td>

00180. 

00181. 

                                    <td> </td>

00182. 

00183. 

                                    <td>

00184. 

00185. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H3" runat="server" ClientInstanceName="cb_hob3" Text="运动" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00186. 

00187. 

                                        </dx:ASPxCheckBox>

00188. 

00189. 

                                    </td>

00190. 

00191. 

                                    <td> </td>

00192. 

00193. 

                                    <td>

00194. 

00195. 

                                        <dx:ASPxCheckBox ID="ASPxCheckBox_H4" runat="server" ClientInstanceName="cb_hob4" Text="社交" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init">

00196. 

00197. 

                                        </dx:ASPxCheckBox>

00198. 

00199. 

                                    </td>

00200. 

00201. 

                                </tr>

00202. 

00203. 

                            </table>

00204. 

00205. 

                        </EditItemTemplate>

00206. 

00207. 

                    </dx:GridViewDataTextColumn>

00208. 

00209. 

                    <dx:GridViewDataTextColumn FieldName="EmailID" VisibleIndex="6" Caption="邮箱" Width="200px">

00210. 

00211. 

                        <EditFormSettings VisibleIndex="6" Visible="True" Caption="邮箱" ColumnSpan="2" />

00212. 

00213. 

                    </dx:GridViewDataTextColumn>

00214. 

00215. 

                    <dx:GridViewDataDateColumn FieldName="CreateTime" VisibleIndex="7" Caption="创建时间" Width="100px" >

00216. 

00217. 

                        <EditFormSettings VisibleIndex="5" Visible="False" Caption="创建时间" />

00218. 

00219. 

                        <CellStyle HorizontalAlign="Center" />

00220. 

00221. 

                        <HeaderStyle HorizontalAlign="Center" />

00222. 

00223. 

                    </dx:GridViewDataDateColumn>

00224. 

00225. 

                    <dx:GridViewDataDateColumn FieldName="ModifyTime" VisibleIndex="7" Caption="修改时间" Width="100px" >

00226. 

00227. 

                        <EditFormSettings VisibleIndex="5" Visible="False" Caption="修改时间" />

00228. 

00229. 

                        <CellStyle HorizontalAlign="Center" />

00230. 

00231. 

                        <HeaderStyle HorizontalAlign="Center" />

00232. 

00233. 

                    </dx:GridViewDataDateColumn>

00234. 

00235. 

                </Columns>

00236. 

00237. 

                <SettingsBehavior ConfirmDelete="true" AllowFocusedRow="true" AllowSelectSingleRowOnly="true" AllowSelectByRowClick="true" />

00238. 

00239. 

                <SettingsEditing EditFormColumnCount="2" />

00240. 

00241. 

                <Settings ShowFooter="True" />

00242. 

00243. 

                <SettingsText EmptyDataRow="无记录" ConfirmDelete="确定删除吗?" />

00244. 

00245. 

                <SettingsPager Mode="ShowPager" PageSize="3" />

00246. 

00247. 

            </dx:ASPxGridView>

00248. 

00249. 

        </div>

00250. 

00251. 

        <dx:XpoDataSource ID="XpoDataSource1" runat="server" TypeName="XPOModel.DemoDB.Users"></dx:XpoDataSource>

00252. 

00253. 

    </form>

00254. 

00255. 

</body>

00256. 

00257. 

</html>

00258. 

 

 2、后台代码:

00001. 

using System;

00002. 

00003. 

using System.Collections.Generic;

00004. 

00005. 

using System.Linq;

00006. 

00007. 

using System.Web;

00008. 

00009. 

using System.Web.UI;

00010. 

00011. 

using System.Web.UI.WebControls;

00012. 

00013. 

using System.Configuration;

00014. 

00015. 

using DevExpress.Xpo;

00016. 

00017. 

using DevExpress.Xpo.DB;

00018. 

00019. 

using DevExpress.Web.ASPxGridView;

00020. 

00021. 

using DevExpress.Web.ASPxEditors;

00022. 

00023. 

using System.Collections;

00024. 

00025. 

public partial class _Default : System.Web.UI.Page

00026. 

00027. 

{

00028. 

00029. 

    protected void Page_Init(object sender, EventArgs e)

00030. 

00031. 

    {

00032. 

00033. 

        string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;//获取数据库连接

00034. 

00035. 

        IDataLayer datalayer = new SimpleDataLayer(XpoDefault.GetConnectionProvider(provider, AutoCreateOption.DatabaseAndSchema));//建立数据层XPO独有的

00036. 

00037. 

        DevExpress.Xpo.Session session = new DevExpress.Xpo.Session(datalayer); //将数据层和会话绑定

00038. 

00039. 

        XpoDataSource1.Session = session;

00040. 

00041. 

    }

00042. 

00043. 

 

00044. 

00045. 

    protected void Page_Load(object sender, EventArgs e)

00046. 

00047. 

    {

00048. 

00049. 

 

00050. 

00051. 

    }

00052. 

00053. 

 

00054. 

00055. 

    protected void ASPxCheckBox_Hobbies_Init(object sender, EventArgs e)

00056. 

00057. 

    {

00058. 

00059. 

        ASPxCheckBox cblHb = sender as ASPxCheckBox;

00060. 

00061. 

        GridViewEditItemTemplateContainer container = cblHb.NamingContainer as GridViewEditItemTemplateContainer;

00062. 

00063. 

        string strHobbies = string.Empty;

00064. 

00065. 

        if (DataBinder.Eval(container.DataItem, "Hobbies") != null)

00066. 

00067. 

            strHobbies = DataBinder.Eval(container.DataItem, "Hobbies").ToString().Trim();

00068. 

00069. 

 

00070. 

00071. 

        if (strHobbies.Contains(cblHb.Text))

00072. 

00073. 

        {

00074. 

00075. 

            cblHb.Checked = true;

00076. 

00077. 

        }

00078. 

00079. 

    }

00080. 

00081. 

 

00082. 

00083. 

    protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)

00084. 

00085. 

    {

00086. 

00087. 

        //在RowInserting时,将当前时间赋值给“创建时间列”CreateTime赋值

00088. 

00089. 

        e.NewValues["CreateTime"] = DateTime.Now;

00090. 

00091. 

 

00092. 

00093. 

        GridViewDataColumn columnHobbies = ASPxGridView1.Columns["Hobbies"] as GridViewDataColumn; //取出GridView的Column

00094. 

00095. 

        //通过ASPxGridView1.FindEditRowCellTemplateControl找出自定义的CheckBox

00096. 

00097. 

        ASPxCheckBox cbH1 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H1") as ASPxCheckBox);

00098. 

00099. 

        ASPxCheckBox cbH2 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H2") as ASPxCheckBox);

00100. 

00101. 

        ASPxCheckBox cbH3 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H3") as ASPxCheckBox);

00102. 

00103. 

        ASPxCheckBox cbH4 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H4") as ASPxCheckBox);

00104. 

00105. 

 

00106. 

00107. 

        ArrayList listHobbies = new ArrayList();

00108. 

00109. 

        if (cbH1.Checked == true)

00110. 

00111. 

        {

00112. 

00113. 

            listHobbies.Add(cbH1.Text);

00114. 

00115. 

        }

00116. 

00117. 

        if (cbH2.Checked == true)

00118. 

00119. 

        {

00120. 

00121. 

            listHobbies.Add(cbH2.Text);

00122. 

00123. 

        }

00124. 

00125. 

        if (cbH3.Checked == true)

00126. 

00127. 

        {

00128. 

00129. 

            listHobbies.Add(cbH3.Text);

00130. 

00131. 

        }

00132. 

00133. 

        if (cbH4.Checked == true)

00134. 

00135. 

        {

00136. 

00137. 

            listHobbies.Add(cbH4.Text);

00138. 

00139. 

        }

00140. 

00141. 

        //通过 e.NewValues["Hobbies"]赋值

00142. 

00143. 

        e.NewValues["Hobbies"] = string.Join(",", listHobbies.ToArray());

00144. 

00145. 

    }

00146. 

00147. 

    protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)

00148. 

00149. 

    {

00150. 

00151. 

        //在RowUpdating时,将当前时间赋值给“创建时间列”ModifyTime赋值

00152. 

00153. 

        e.NewValues["ModifyTime"] = DateTime.Now;

00154. 

00155. 

 

00156. 

00157. 

        GridViewDataColumn columnHobbies = ASPxGridView1.Columns["Hobbies"] as GridViewDataColumn;//取出GridView的Column

00158. 

00159. 

        //通过ASPxGridView1.FindEditRowCellTemplateControl找出自定义的CheckBox

00160. 

00161. 

        ASPxCheckBox cbH1 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H1") as ASPxCheckBox);

00162. 

00163. 

        ASPxCheckBox cbH2 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H2") as ASPxCheckBox);

00164. 

00165. 

        ASPxCheckBox cbH3 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H3") as ASPxCheckBox);

00166. 

00167. 

        ASPxCheckBox cbH4 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H4") as ASPxCheckBox);

00168. 

00169. 

 

00170. 

00171. 

        ArrayList listHobbies = new ArrayList();

00172. 

00173. 

        if (cbH1.Checked == true)

00174. 

00175. 

        {

00176. 

00177. 

            listHobbies.Add(cbH1.Text);

00178. 

00179. 

        }

00180. 

00181. 

        if (cbH2.Checked == true)

00182. 

00183. 

        {

00184. 

00185. 

            listHobbies.Add(cbH2.Text);

00186. 

00187. 

        }

00188. 

00189. 

        if (cbH3.Checked == true)

00190. 

00191. 

        {

00192. 

00193. 

            listHobbies.Add(cbH3.Text);

00194. 

00195. 

        }

00196. 

00197. 

        if (cbH4.Checked == true)

00198. 

00199. 

        {

00200. 

00201. 

            listHobbies.Add(cbH4.Text);

00202. 

00203. 

        }

00204. 

00205. 

        //通过 e.NewValues["Hobbies"]赋值

00206. 

00207. 

        e.NewValues["Hobbies"] = string.Join(",", listHobbies.ToArray());

00208. 

00209. 

    }

00210. 

00211. 

}

00212. 

 源码下载:http://pan.baidu.com/s/1hqziMNE

    

    

渝公网安备 50011902000225号

渝ICP备18008233号-1