下拉列表與多選框以及GridView中的多選框的問題

           小丫頭的隨筆。。。
          頁面設計中有一個下拉列表(DropDownList)和多選框列表(CheckBoxList)以及一個可以提供顯示的表格(GridView)。當選擇下拉列表中具體的值時,進行對多選框的選擇,在多選框中挑上溝。點擊保存在GridView中顯示一條數據。
 aiqinhai.aspx如下:
   <asp:DropDownList ID="ddl_aiqinhai" runat="server" CssClass="DropDownList"  AutoPostBack="True" OnSelectedIndexChanged="ddl_aiqinhai_SelectedIndexChanged">
                    </asp:DropDownList>
 
 <asp:Panel ID="Panel1" runat="server" Height="150px" ScrollBars="Vertical" Width="80%">
                        <asp:CheckBoxList ID="cbl_aiqinhai" runat="server" Width="80%">
                        </asp:CheckBoxList></asp:Panel>
 
aiqinhai.aspx.cs 如下:
  /// <summary>
    /// 下拉列表的綁定
    /// </summary>
    private void Bind_dll_aiqinhai()
    {
        Aiqinhai_BLL  aqh= new Aiqinhai_BLL();
        DataTable DT = bll.GetName_B();
        ddl_aiqinhai.DataSource = DT;
        ddl_aiqinhai.DataTextField = "Name";
        ddl_aiqinhai.DataValueField = "PK_UserID";
        ddl_aiqinhai.DataBind();
    }
 
   /// <summary>
    /// 多選框的綁定
    /// </summary>
    private void Bind_cbl_PostName()
    {
       Aiqinhai_BLL bll = new Aiqinhai_BLL();
        DataTable DT = bll.GetPost_B();
        cbl_aiqinhai.DataSource = DT;
        cbl_aiqinhai.DataTextField = "PostName";
        cbl_aiqinhai.DataValueField = "PK_PostID";
        cbl_aiqinhai.DataBind();
    }
 
 #region 下拉列表框的事件
    public DataTable GetPostUserID(string UserId)
    {
        Post_BLL bll = new Post_BLL();
        return bll.GetPostUser_B(UserId);
    }
    protected void ddl_aiqinhai_SelectedIndexChanged(object sender, EventArgs e)
    {
        Bind_cbl_PostName();
        DataTable dt = GetPostUserID(this.ddl_aiqinhai.SelectedValue);
        foreach (DataRow dr in dt.Rows)
        {
            for (int i = 0; i < cbl_aiqinhai.Items.Count; i++)
            {
                if (dr["FK_PostID"].ToString() == cbl_aiqinhai.Items[i].Value)
                {
                    cbl_aiqinhai.Items[i].Selected = true;
                }
            }
        }
    }
    #endregion
 
循環得到ID
 for (int i = 0; i < cbl_aiqinhai.Items.Count; i++)
        {
            if (cbl_aiqinhai.Items[i].Selected)
            {
                string userid;
                string postid;
                userid= this.ddl_aiqinhai.SelectedValue;
                postid = cbl_aiqinhai.Items[i].Value;
              .....
            }
        }
    
 
   當多選框在GridView中,選擇下拉列表時所對應的是GridView中的相關信息。
  <asp:GridView ID="grv_Aiqinhai" SkinID="GridView" UseAccessibleHeader="false" runat="server" Width="98%"
                    DataKeyNames="PK_postid"  AutoGenerateColumns="False" AllowPaging="True">
                    <Columns>
                        <asp:TemplateField HeaderText="選擇">
                            <ItemTemplate >
                                <asp:CheckBox ID="cbl_Aiqinhai" runat="server" />
                            </ItemTemplate>
                            <HeaderStyle  HorizontalAlign="Center" Width="60px" />
                            <ItemStyle HorizontalAlign="Center" Width="60px" />
                        </asp:TemplateField>
                       
                        <asp:BoundField DataField="DailyProcedureName" HeaderText="崗位名稱"  >
                         <HeaderStyle  HorizontalAlign="Center"/>
                            <ItemStyle HorizontalAlign="Center" />
                        </asp:BoundField>
                      
                    </Columns>
                    <PagerSettings Visible="False" />
                </asp:GridView>
 
下拉列表的事件如下:
 protected void ddl_aiqinhai_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataTable dt = GetDailyProcedureID(this.ddl_aiqinhai.SelectedValue);
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i <= grv_Aiqinhai.Rows.Count - 1; i++)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    if (grv_Aiqinhai.DataKeys[i].Value.ToString() != null)
                    {
                        if (grv_Aiqinhai.DataKeys[i].Value.ToString() == dr["FK_userid"].ToString())
                        {
                            CheckBox cbox = (CheckBox)grv_Aiqinhai.Rows[i].FindControl("cbl_Aiqinhai");
                            cbox.Checked = true;
                        }
                    }
                }
            }
        }
}
 
循環得到GridView中的ID
 foreach (GridViewRow grv in grv_Aiqinhai.Rows)
        {
            if (((CheckBox)grv.FindControl("cbl_Aiqinhai")).Checked)
            {
                   .......
            }
        }
得到ID即可對數據進行相關操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章