我想用DataGridView做录入,但是其中有一列是用可以选择的,并且有他自己的数据源,这个怎么弄?

解决方案 »

  1.   

     //格式化性别
                DataGridViewComboBoxColumn co_sex = new DataGridViewComboBoxColumn();
                co_sex.DataPropertyName = "sSex";
                co_sex.HeaderText = "性别";
                DataTable dt = new DataTable();
                dt.Columns.Add("sexname");
                dt.Columns.Add("sexvalue");
                DataRow dr = dt.NewRow();
                dr[0] = "男";
                dr[1] = "男";
                dt.Rows.Add(dr);
                DataRow dr1 = dt.NewRow();
                dr1[0] = "女";
                dr1[1] = "女";
                dt.Rows.Add(dr1);
                
                co_sex.DataSource = dt;
                co_sex.ValueMember = "sexvalue";
                co_sex.DisplayMember = "sexname";

                
                this.DataGridView1.Columns.Add(co_sex);
    红色的部分可以换成你自己的数据源
      

  2.   

    DataGridViewComboBoxColumn rr = new DataGridViewComboBoxColumn(); 
                rr.Name = "combobox"; 
                rr.DataSource=你从数据库获取的数据; 
                rr.DisplayMember="字段"; 
                rr.ValueMember="字段2" 
                rr.Items.Add("ss");//也可以自己添加的数据 
                rr.Items.Add("hh");//也可以自己添加的数据 
                this.dataGridView1.Columns.Add(rr); 
      

  3.   

                dataGridView1.AutoGenerateColumns = false;
                dataGridView1.DataSource = DBAccess.GetOrderDetails(orderID);
                dataGridView1.DataMember = "OrderDetails";
                dataGridView1.Columns[0].ReadOnly = true;            DataGridViewComboBoxColumn ProductID = new DataGridViewComboBoxColumn();
                ProductID.DisplayIndex = 1;
                ProductID.HeaderText = "ProductName";
                ProductID.DataPropertyName = "ProductID";
                ProductID.DataSource = DBAccess.GetProducts().Tables[0];
                ProductID.DisplayMember = "ProductName";
                ProductID.ValueMember = "ProductID";
                ProductID.Name = "ProductID";
                dataGridView1.Columns.Add(ProductID);
      

  4.   

    这个很简单的,你在后台写一个数据源,然后在前台直接绑定这个数据源就可以了。如下:
    前台代码:
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Height="234px"
                Width="537px">
                <Columns>
                    <asp:TemplateField HeaderText="源表">
                        <ItemTemplate>
                            <asp:DropDownList ID="ddls2" DataTextField="column_name" DataSource='<%# ColumnDataSource() %>' runat="server" AppendDataBoundItems="True">
                                <asp:ListItem Value="0">忽略</asp:ListItem>
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="目的表">
                        <ItemTemplate>
                            <%# Eval("ms") %>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="字段">
                        <ItemTemplate>
                            <%# Eval("col") %>
                            <asp:Label ID="lbcol" runat="server" Text='<%# Eval("col") %>' Visible="False"></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="字段类型">
                        <ItemTemplate>
                            <%# Eval("type") %>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <RowStyle HorizontalAlign="Center" />
            </asp:GridView>
    后台代码:
    #region "查询表的列名"
        public DataSet ColumnDataSource()
        {
            string strConn;
            strConn = "select name from syscolumns where id =( select id from sysobjects where name='test')";
            SqlConnection conn = new SqlConnection("uid=sa;pwd=;DataBase="+DropDownList2.SelectedItem.Text+";Server=(local);");
            SqlDataAdapter myCommand = new SqlDataAdapter(strConn, conn);
            DataSet myDataSet = new DataSet();
            myCommand.Fill(myDataSet);
            return myDataSet;
        }
        #endregion
      

  5.   

    //格式化性别 
                DataGridViewComboBoxColumn co_sex = new DataGridViewComboBoxColumn(); 
                co_sex.DataPropertyName = "sSex"; 
                co_sex.HeaderText = "性别"; 
                DataTable dt = new DataTable(); 
                dt.Columns.Add("sexname"); 
                dt.Columns.Add("sexvalue"); 
                DataRow dr = dt.NewRow(); 
                dr[0] = "男"; 
                dr[1] = "男"; 
                dt.Rows.Add(dr); 
                DataRow dr1 = dt.NewRow(); 
                dr1[0] = "女"; 
                dr1[1] = "女"; 
                dt.Rows.Add(dr1); 
                
                co_sex.DataSource = dt; 
                co_sex.ValueMember = "sexvalue"; 
                co_sex.DisplayMember = "sexname"; 
                
                this.DataGridView1.Columns.Add(co_sex); 
    红色的部分可以换成你自己的数据源 
     
    修改 删除 举报 引用 回复   
     
     加为好友 
    发送私信 
    在线聊天
     Guyschaos 
    贫僧已皈依佛门,法号庆缘! 
    等级: 
    可用分等级:贫农 
    总技术分:10439 
    总技术分排名:2043  发表于:2008-06-27 09:03:592楼 得分:9 
    DataGridViewComboBoxColumn rr = new DataGridViewComboBoxColumn(); 
                rr.Name = "combobox"; 
                rr.DataSource=你从数据库获取的数据; 
                rr.DisplayMember="字段"; 
                rr.ValueMember="字段2" 
                rr.Items.Add("ss");//也可以自己添加的数据 
                rr.Items.Add("hh");//也可以自己添加的数据 
                this.dataGridView1.Columns.Add(rr);