请问如何才能响应datagrid的Click和Double Click事件?

解决方案 »

  1.   

    private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
     //点击表格打开
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id=" + e.Item.Cells[0].Text + "’);");
    }//双击表格连接到另一页private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
     string OrderItemID =e.item.cells[1].Text;
     ...
     e.item.Attributes.Add("ondblclick", "location.href=’../ShippedGrid.aspx?id=" + OrderItemID + "’");
    }
    }//双击表格打开新一页private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
     string OrderItemID =e.item.cells[1].Text;
     ...
     e.item.Attributes.Add("ondblclick", "open(’../ShippedGrid.aspx?id=" + OrderItemID + "’)");
    }
    }
      

  2.   

    呵呵,也没有什么可补充的了.建议用moveup来代替click
      

  3.   

    Sorry,没说清楚,是WinForm,请各位再动动手告诉小弟一声。
      

  4.   

    private DataSet myDataSet;
    DateTime gridMouseDownTime;
    public Form1()
    {
    //
    // Required for Windows Form Designer support
    //
    InitializeComponent(); gridMouseDownTime = DateTime.Now;
    // Call SetUp to bind the controls.
    SetUp();
    } private void SetUp()
    {
    // Create a DataSet with two tables and one relation.
    MakeDataSet();
    /* Bind the DataGrid to the DataSet. The dataMember
    specifies that the Customers table should be displayed.*/
         dataGrid1.SetDataBinding(myDataSet, "Customers"); //create and add a custom table style so we can
    //easily get at the behavior of a cell...
    AddCustomDataTableStyle();
    } private void MakeDataSet()
    {
    // Create a DataSet.
    myDataSet = new DataSet("myDataSet");
          
    // Create two DataTables.
    DataTable tCust = new DataTable("Customers"); // Create two columns, and add them to the first table.
    DataColumn cCustID = new DataColumn("custID");
    DataColumn cCustName = new DataColumn("custName");
    DataColumn cCurrent = new DataColumn("custCity");
    tCust.Columns.Add(cCustID);
    tCust.Columns.Add(cCustName);
    tCust.Columns.Add(cCurrent); // Add the tables to the DataSet.
    myDataSet.Tables.Add(tCust);   
    /* Populates the tables. For each customer and order, 
    creates two DataRow variables. */
    DataRow newRow1; // Create three customers in the Customers Table.
    for(int i = 1; i < 4; i++)
    {
    newRow1 = tCust.NewRow();
    newRow1["custID"] = (100*i).ToString();
    tCust.Rows.Add(newRow1);
    }
    // Give each customer a distinct name.
    tCust.Rows[0]["custName"] = "John Summers";
    tCust.Rows[1]["custName"] = "Phil Seagram";
    tCust.Rows[2]["custName"] = "Sam Robinson"; // And address
    tCust.Rows[0]["custCity"] = "Chicago";
    tCust.Rows[1]["custCity"] = "Los Angeles";
    tCust.Rows[2]["custCity"] = "Washington";
    } private void AddCustomDataTableStyle()
    {
    DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.MappingName = "Customers";
    // Set other properties.
    ts1.AlternatingBackColor = Color.LightGray;
    //
    // Add textbox column style so we can catch textbox mouse clicks
    DataGridTextBoxColumn TextCol = new DataGridTextBoxColumn();
    TextCol.MappingName = "custID";
    TextCol.HeaderText = "CustomerID";
    TextCol.Width = 100;
    //add handler
    TextCol.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);
    TextCol.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);
    ts1.GridColumnStyles.Add(TextCol); TextCol = new DataGridTextBoxColumn();
    TextCol.MappingName = "custName";
    TextCol.HeaderText = "Customer Name";
    TextCol.Width = 100;
    //add handler
    TextCol.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);
    TextCol.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);
    ts1.GridColumnStyles.Add(TextCol); TextCol = new DataGridTextBoxColumn();
    TextCol.MappingName = "custCity";
    TextCol.HeaderText = "Customer Address";
    TextCol.Width = 100;
    //add handler
    TextCol.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);
    TextCol.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);
    ts1.GridColumnStyles.Add(TextCol);   dataGrid1.TableStyles.Add(ts1); }
    private void TextBoxDoubleClickHandler(object sender, EventArgs e)
    {
    MessageBox.Show("TrueDoubleClick");
    } private void TextBoxMouseDownHandler(object sender, MouseEventArgs e)
    {
    if(DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))
    {
    MessageBox.Show("GridDoubleClick");
    }
    Console.WriteLine("TextBoxMouseDownHandler  " );
    } private void dataGrid1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    gridMouseDownTime = DateTime.Now;
    Console.WriteLine("dataGrid1_MouseDown  " );
    }
      

  5.   

    最好有VS2005的DATAGRIDVIEW,就沒問題了2003不好
      

  6.   

    也就是说,要处理datagrid相关的textbox的事件。
    没有更简单的方法了吗?