如何在DataGrid中動態創建CheckBoxList(數據庫中加載數據)並記錄它的選中狀態,最好有完整例子

解决方案 »

  1.   

    去这看看http://topic.csdn.net/u/20070822/11/f4ed11fc-2828-49f2-8e09-fc846180b426.html
      

  2.   

    我貼下代碼:
    前台:
    <asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" DataKeyField="UserID" OnItemCommand="DataGrid1_ItemCommand"  OnItemCreated="DataGrid1_ItemCreated" onitemdatabound="FormatDataGrid1_ItemDataBound" >
                
                <ItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" 
                    Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" 
                    VerticalAlign="Middle" />
                
                <Columns>
                    
                   <asp:TemplateColumn HeaderText="用戶名稱">
                        
                        <ItemTemplate>
                            <asp:HiddenField ID="hidUserID" runat="server" Value='<%# Eval("UserID") %>' />
                            <asp:Label ID="Label1" runat="server" 
                                Text='<%# DataBinder.Eval(Container, "DataItem.UserName") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateColumn>
                    
                    <asp:TemplateColumn HeaderText="模塊名稱">
                        <ItemTemplate>
                            
                            <asp:DropDownList ID="DDListRightListName" runat="server" >
                        
                        </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateColumn>
                    
                    
                    <asp:TemplateColumn HeaderText="權限名稱">
                        
                        <ItemTemplate>
                            <asp:CheckBoxList ID="chkRightFlag" runat="server" RepeatDirection="Horizontal"></asp:CheckBoxList>
                        </ItemTemplate>
                    </asp:TemplateColumn>
                                </Columns>
                
            </asp:DataGrid>
    CS頁面:
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    BindGrid();            }        }        public void BindGrid()
            {
                
                DataSet ds = new DataSet();
                this.DataGrid1.DataSource = ds.Tables["userTB"];            this.DataGrid1.DataBind();            string str1 = "select RightListID,RightListName from RightList";
                string str2 = "select RightFlagID,RightFlagName from RightFlagInfo";
                SqlDataReader dr1 = userBLL.GetDataReader(str1);
                SqlDataReader dr2 = userBLL.GetDataReader(str2);
                DropDownList ddlist;
                CheckBoxList chklist;
                while (dr1.Read() && dr2.Read())
                {                for (int i = 0; i < this.DataGrid1.Items.Count; i++)
                    {
                        ddlist = (DropDownList)this.DataGrid1.Items[i].Cells[1].Controls[1];
                        ddlist.Items.Add(new ListItem(dr1[1].ToString(), dr1[0].ToString()));
                        chklist = (CheckBoxList)this.DataGrid1.Items[i].Cells[2].Controls[1];
                        chklist.Items.Add(new ListItem(dr2[1].ToString(), dr2[0].ToString()));
                        ddlist.DataBind();
                        chklist.DataBind();
                    }            }
                dr1.Close();
                dr2.Close();
    }
    用這種方式創建的checkboxlist每行記錄隻能選中一個項,其它選中的項取不到值,鬱悶死了!大家幫幫忙
      

  3.   

    我是想在datagrid中用checkboxlist加載權限項,記錄值後點button存到數據庫中,但是每行的checkboxlist隻能取到一個選中的記錄
      

  4.   

    你是要让dropdown设置成多选?那你用listbox就好了
      

  5.   

    我是要讓checkboxlist多選並取到值,我現在隻能取到一個值
      

  6.   

    沒有datagrid就好辦,放到datagrid裡就不好取值了
      

  7.   

    <ItemTemplate>
                                <asp:CheckBoxList DataSource='<%# GetDs(DataBinder.Eval(Container, "DataItem.RightFlagID"),DataBinder.Eval(Container, "DataItem.RightFlagName")) %>' DataTextField="RightFlagName" DataValueField="RightFlagID" ID="ChkRightFlagName" runat="server"></asp:CheckBoxList>
                            </ItemTemplate>
    這種方式如何在後台CS裡獲得數據源?這種方式怎麼來寫代碼?
      

  8.   

    <ItemTemplate> 
                                <asp:CheckBoxList DataSource=' <%# GetDs() %>' DataTextField="RightFlagName" DataValueField="RightFlagID" ID="ChkRightFlagName" runat="server"> </asp:CheckBoxList> 
                            </ItemTemplate>这种方式取到的值还是只有一个,晕死了.....高手帮忙啊
    而且是这样取到值的:
    第一行:1 2 3 4 5 6 7 8 9   取到:1(多选只能取到1)
    第二行:1 2 3 4 5 6 7 8 9   取到:2(多选只能取到2)
    第三行:1 2 3 4 5 6 7 8 9   取到:3(多选只能取到3)
    第四行:1 2 3 4 5 6 7 8 9   取到:4(多选只能取到4)
    第五行:1 2 3 4 5 6 7 8 9   取到:5(多选只能取到5)
    第六行:1 2 3 4 5 6 7 8 9   取到:6(多选只能取到6)