seehttp://www.codeproject.com/cs/miscctrl/datagrid_combobox.asp

解决方案 »

  1.   

    你可以用dropdownlist:
    <asp:TemplateColumn HeaderText="用户状态">
    <ItemTemplate>
    <%# DataBinder.Eval(Container,"DataItem.zt")%>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:DropDownList id=ddlSelectState SelectedIndex='<%# DataBinder.Eval(Container,"DataItem.zt")%>' Runat="server">
    <asp:ListItem Value="0" text="验证前"></asp:ListItem>
    <asp:ListItem Value="1" text="正式"></asp:ListItem>
    <asp:ListItem Value="2" text="停止"></asp:ListItem>
    </asp:DropDownList>
    </EditItemTemplate>
    </asp:TemplateColumn>//更新数据
    protected void OnUpdate(object send ,DataGridCommandEventArgs e)
    {


    SqlConnection sqlConn=new SqlConnection(strConn);
    sqlConn.Open();
    DataSet ds =new DataSet();
    ds=this.ReadTeacher();
    int row=Convert.ToInt32 (this.dgrConfirm.CurrentPageIndex)*10+Convert.ToInt32(e.Item.ItemIndex );
    DropDownList ddl;
    ddl=(DropDownList)e.Item.FindControl("ddlSelectState");
    string strUserName=ds.Tables[0].Rows[row]["yhm"].ToString();
    string strUpdate="Update jcjsqd set zt="+Convert.ToInt32(ddl.SelectedValue)+" where yhm='"+strUserName+"'";
    SqlCommand sqlComm=new SqlCommand(strUpdate,sqlConn);
    sqlComm.ExecuteNonQuery();
    sqlConn.Close();
    ds=this.ReadTeacher();
    this.dgrConfirm.EditItemIndex=-1;
    this.dgrConfirm.DataSource=ds;
    this.dgrConfirm.DataBind();
    }
      

  2.   

    用模板列,放个DropDownList为它添加两个成员"男","女",SelectItem.Value分别为1,2
    保存时,保存SelectItem.Value即可
      

  3.   

    你用<asp:RadioButtonList id="rblSex" runat="server" Width="126px" BorderStyle="None" RepeatDirection="Horizontal"></asp:RadioButtonList>
    在其间设置listitem属性就可以了
      

  4.   

    这里只有男和女不要用下拉list,用RadioButtonList更好些
      

  5.   

    http://www.rgbcn.com/bbs/UpLoadFile/2003102812421396260.zip从我网上直接下。我装的是vs.net 2002 打不开。
    这个好像是用vs.net 2003 开发的。
      

  6.   

    grid.controls.add( 下接控件)再根据grid行列来确定是否显示这个控件,及控件的位置接下来就很简单了。
      

  7.   

    http://www.syncfusion.com/FAQ/WinForms/default.asp有的
      

  8.   

    你可以在DataTable里加一列,用来记录用户的性别,在显示的时候根据这列动态改变下拉菜单的属性
      

  9.   

    特别感谢rghcn(cody) !刚刚下载完毕,明天到公司去试试!
      

  10.   

    自己写一个类啊,继承DataGridTextBoxColumn,然后,你再在你的应用程序中修改你的DataGrid里面的列,就是定义为MyDataGridComboBoxColumn,给你看看这个代码,不知道对你有没有用:
    public class MyDataGridComboBoxColumn : DataGridTextBoxColumn
    {
    public NoKeyUpCombo ColumnComboBox = null;
    private System.Windows.Forms.CurrencyManager _source = null;
    private int _rowNum;
    private bool _isEditing = false;

    public MyDataGridComboBoxColumn()
    {
    ColumnComboBox = new NoKeyUpCombo();
        
    ColumnComboBox.KeyPress+=new KeyPressEventHandler(Text_KeyPress);
    ColumnComboBox.Leave += new EventHandler(LeaveComboBox);
    ColumnComboBox.SelectedIndexChanged += new System.EventHandler(ComboIndexChanged);
    ColumnComboBox.SelectionChangeCommitted += new System.EventHandler(ComboStartEditing);
    }

    public void MyComboValueChanged(int rowChanging, object newValue)
    {
    Console.WriteLine("index changed {0} {1}", rowChanging, newValue);
    } private void ComboStartEditing(object sender, EventArgs e)
    {
    _isEditing = true;
    base.ColumnStartedEditing((Control) sender);
    }

    private void ComboIndexChanged(object sender, EventArgs e)
    {
    MyComboValueChanged(_rowNum , ColumnComboBox.Text); 
    } private void LeaveComboBox(object sender, EventArgs e)
    {
    if(_isEditing)
    {
    SetColumnValueAtRow(_source, _rowNum, ColumnComboBox.Text);
    _isEditing = false;
    Invalidate();
    }
    ColumnComboBox.Hide();

    }



    public event  EventHandler EnterKeyPress; private void Text_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if(e.KeyChar==(char)13)
    {
    if(EnterKeyPress!=null)
    {
    EnterKeyPress(ColumnComboBox,new System.EventArgs());
    }
    }
    } public Color Column_BackColor
    {
    get
    {
    return ColumnComboBox.BackColor;
    }
    set
    {
    ColumnComboBox.BackColor=value;
    }
    } public Color Column_ForeColor
    {
    get
    {
    return ColumnComboBox.ForeColor;
    }
    set
    {
    ColumnComboBox.ForeColor=value;
    }
    }
    }
    public class NoKeyUpCombo : ComboBox
    {
    const int WM_KEYUP = 0x101;
    protected override void WndProc(ref System.Windows.Forms.Message m)
    {
    if(m.Msg == WM_KEYUP)
    {
                                  return;
    }
    base.WndProc(ref m);
    }
    }
      

  11.   

    请问:rgbcn,为什么我将它的dll引用到自己的程序后,就会发生GDI+一般错误的信息,觉得很奇怪,因为只有DataGridComboBoxColumn的这个类有问题,而DataGidButtonColumn这个类好像很正常