zoukankan      html  css  js  c++  java
  • ASPxGridView 选中主表一行数据,从表自动选中(勾选)对应的行

    一、图解

    下图为效果图,点击 【A表】种的某一行,【B表】会有与之相对于一行会被自动选中并且勾选上;

    二、Html 代码

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <script type="text/JavaScript">
            function gridRole_SelectionChanged(s, e) {
                s.GetSelectedFieldValues("TyID", GetSelectedFieldValuesCallback);
            }
            function GetSelectedFieldValuesCallback(values) {
                selList.BeginUpdate();
                try {
                    selList.ClearItems();
                    for (var i = 0; i < values.length; i++) {
                        selList.AddItem(values[i]);
                    }
                } finally {
                    selList.EndUpdate();
                }
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <table style=" 100%;">
                    <tr>
                        <td>
                            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
                        </td>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td>
                            <dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server" Width="300px"
                                AutoGenerateColumns="false" KeyFieldName="YgID" ClientIDMode="AutoID" OnCustomColumnDisplayText="grid_CustomColumnDisplayText">
                                <Styles Row-Cursor="pointer">
                                    <Row Cursor="pointer">
                                    </Row>
                                    <AlternatingRow Enabled="True">
                                    </AlternatingRow>
                                </Styles>
                                <ClientSideEvents FocusedRowChanged="function(s, e){ gridRole.PerformCallback(s.GetFocusedRowIndex()); }" />
                                <Columns>
                                    <dx:GridViewDataTextColumn Caption="序号" VisibleIndex="1" Width="5%">
                                    </dx:GridViewDataTextColumn>
                                    <dx:GridViewDataTextColumn Caption="账号" FieldName="YgID" ShowInCustomizationForm="True"
                                        VisibleIndex="2">
                                    </dx:GridViewDataTextColumn>
                                    <dx:GridViewDataTextColumn Caption="姓名" FieldName="Name" VisibleIndex="3">
                                    </dx:GridViewDataTextColumn>
                                </Columns>
                                <SettingsBehavior AllowFocusedRow="True" />
                                <SettingsPager AlwaysShowPager="True"></SettingsPager>
                                <Styles>
                                    <AlternatingRow Enabled="True"></AlternatingRow>
                                    <Row Cursor="pointer"></Row>
                                </Styles>
                            </dx:ASPxGridView>
                        </td>
                        <td>
                            <dx:ASPxGridView ID="gridRole" ClientInstanceName="gridRole" runat="server" Width="200px"
                                AutoGenerateColumns="False" KeyFieldName="TyID" ClientIDMode="AutoID" OnCustomCallback="gridRole_CustomCallback">
                                <SettingsPager AlwaysShowPager="True">
                                </SettingsPager>
                                <Styles>
                                    <Row Cursor="pointer">
                                    </Row>
                                    <AlternatingRow Enabled="True">
                                    </AlternatingRow>
                                </Styles>
                                <Columns>
                                    <dx:GridViewCommandColumn ShowSelectCheckbox="True" VisibleIndex="0" Width="5%">
                                        <ClearFilterButton Visible="True">
                                        </ClearFilterButton>
                                        <HeaderStyle HorizontalAlign="Center" />
                                        <CellStyle HorizontalAlign="Center">
                                        </CellStyle>
                                        <HeaderTemplate>
                                            <input type="checkbox" onclick="gridRole.SelectAllRowsOnPage(this.checked);" title="全选" />
                                        </HeaderTemplate>
                                    </dx:GridViewCommandColumn>
                                     <dx:GridViewDataTextColumn Caption="类型" FieldName="TyID"
                                        VisibleIndex="1">
                                    </dx:GridViewDataTextColumn>
    
                                    <dx:GridViewDataTextColumn Caption="角色名称" FieldName="TyName"
                                        VisibleIndex="2">
                                    </dx:GridViewDataTextColumn>
                                </Columns>
                                <SettingsBehavior AllowFocusedRow="True" AllowMultiSelection="true" />
                                <Styles Row-Cursor="pointer">
                                    <Row Cursor="pointer">
                                    </Row>
                                    <AlternatingRow Enabled="True">
                                    </AlternatingRow>
                                </Styles>
                                <ClientSideEvents SelectionChanged="gridRole_SelectionChanged" />
                            </dx:ASPxGridView> 
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <dx:ASPxListBox ID="lsbRoleId" ClientInstanceName="selList" runat="server">
                                <Columns>
                                    <dx:ListBoxColumn Caption="编号" FieldName="TyID" />
                                </Columns>
                            </dx:ASPxListBox> 
                        </td>
                    </tr>
                </table>
                <div style="display: none;">
                    
                </div>
            </div>
        </form>
    </body>
    </html>

    三、CS 代码

       public partial class WebForm1 : System.Web.UI.Page
        {
            public static DataTable dtMaster;//用户主表
            public static DataTable dtItem;//用户表 与 类型表的关联关系表
            public static DataTable dtType;//类型表
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //.....................................................................
                    //创建表 添加行列
                    //.....................................................................
                    dtMaster = new DataTable();
                    dtMaster.Columns.Add("YgID",Type.GetType("System.String"));
                    dtMaster.Columns.Add("Name", Type.GetType("System.String"));
                    //----------------------
                    DataRow dr = dtMaster.NewRow();
                    dr["YgID"] = "Y01";
                    dr["Name"] = "同学1";
                    dtMaster.Rows.Add(dr);
                    //..................
                    DataRow dr2 = dtMaster.NewRow();
                    dr2["YgID"] = "Y02";
                    dr2["Name"] = "同学2";
                    dtMaster.Rows.Add(dr2);
                    //.....................................................................
                    dtType = new DataTable();
                    dtType.Columns.Add("TyID", Type.GetType("System.String"));
                    dtType.Columns.Add("TyName", Type.GetType("System.String"));
                    //----------------------
                    DataRow Tydr = dtType.NewRow();
                    Tydr["TyID"] = "T01";
                    Tydr["TyName"] = "类型1";
                    dtType.Rows.Add(Tydr);
                    //..................
                    DataRow Tydr2 = dtType.NewRow();
                    Tydr2["TyID"] = "T02";
                    Tydr2["TyName"] = "类型2";
                    dtType.Rows.Add(Tydr2);
                    //.....................................................................
                    dtItem = new DataTable();
                    dtItem.Columns.Add("YgID", Type.GetType("System.String"));
                    dtItem.Columns.Add("TyID", Type.GetType("System.String"));
                    //----------------------
                    DataRow dr1_ = dtItem.NewRow();
                    dr1_["YgID"] = "Y01";
                    dr1_["TyID"] = "T02";
                    dtItem.Rows.Add(dr1_);
                    //..................
                    DataRow dr2_ = dtItem.NewRow();
                    dr2_["YgID"] = "Y02";
                    dr2_["TyID"] = "T01";
                    dtItem.Rows.Add(dr2_);
                    //..................
                    this.grid.DataSource = dtMaster;
                    this.grid.DataBind();
                    this.gridRole.DataSource = dtType;
                    this.gridRole.DataBind();
                }
            }
    
            protected void grid_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e)
            {
                if (e.Column.VisibleIndex == 0)
                {
                    e.DisplayText = (e.VisibleRowIndex + 1).ToString();
                }
            }
    
            protected void gridRole_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
            {
                string userid = Convert.ToString(grid.GetRowValues(grid.FocusedRowIndex, "YgID"));
                ASPxGridView gd = sender as ASPxGridView;
                gd.Selection.UnselectAll();
                DataTable dt = GetUsr(userid);
                for (int i = 0; i < gd.VisibleRowCount; i++)
                {
                    string RoleIdRow = string.Empty;
                    RoleIdRow = Convert.ToString((gd.GetRowValues(i, "TyID")));
                    if (RoleIdRow != string.Empty)
                    {
                        if (dt != null && dt.Rows.Count > 0)
                        {
                            for (int j = 0; j < dt.Rows.Count; j++)
                            {
                                string roleDs = Convert.ToString(dt.Rows[j]["TyID"]);
                                if (RoleIdRow == roleDs)
                                {
                                    gd.Selection.SelectRow(i);
                                }
                            }
                        }
                    }
                }
            }
    
            DataTable GetUsr(string usr)
            {
                DataTable dtItem_ = new DataTable();
                dtItem_.Columns.Add("YgID", Type.GetType("System.String"));
                dtItem_.Columns.Add("TyID", Type.GetType("System.String"));
                for (int i = 0; i < dtItem.Rows.Count;i++ )
                {
                    if (usr == dtItem.Rows[i]["YgID"].ToString())
                    {
                        DataRow dr = dtItem_.NewRow();
                        dr["YgID"] = dtItem.Rows[i]["YgID"].ToString();
                        dr["TyID"] = dtItem.Rows[i]["TyID"].ToString();
                        dtItem_.Rows.Add(dr);
                    }
                }
                return dtItem_;
            }
    
            /// <summary>
            /// 保存
            /// </summary>
            private void SaveUserRole()
            {
                string sUserId = Convert.ToString(grid.GetRowValues(grid.FocusedRowIndex, "UserId"));
                int iResult = 0;
                string RoldIdList = string.Empty;
                string url = string.Empty;
                for (int i = 0; i < lsbRoleId.Items.Count; i++)
                {
                    RoldIdList += lsbRoleId.Items[i].ToString() + ',';
                }
                //## 插入到数据库语句 
                lsbRoleId.Items.Clear();
            }
            /// <summary>
            /// 保存按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                SaveUserRole();
            }
    
        }
  • 相关阅读:
    Luogu P2495 [SDOI2011]消耗战
    40. Combination Sum II
    39. Combination Sum
    22. Generate Parentheses
    51. N-Queens
    Codeforces Round #346 (Div. 2) E. New Reform
    Codeforces Round #346 (Div. 2) D. Bicycle Race
    HDU 5651xiaoxin juju needs help
    VK Cup 2016
    Educational Codeforces Round 10 D. Nested Segments
  • 原文地址:https://www.cnblogs.com/lanyubaicl/p/7379951.html
Copyright © 2011-2022 走看看