2015-09-24 80 views
0

我正在使用C#和ASP.NET在Visual Studio 2015專業版中編寫Web應用程序。現在,我已經設置了用戶點擊按鈕的位置,C#代碼將獲取一堆數據,然後在表格中將其顯示回用戶。我花了一天的時間努力弄清楚如何將一些可點擊事件添加到表格行中,但沒有成功。最終,我想要做的是在點擊表格行並向其發送行索引時,在我的C#代碼中調用一個方法。使用C#在ASP.NET中選擇動態創建的表格行#

這裏是我使用生成表上的C#代碼:

protected void searchButton_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      // Remove the error display 
      resultListLabel.Style.Add("Display", "None"); 

      // Get document groups 
      groups = TableCommands.getGroups(dbConn, "retriever", searchTextOne.Text, searchTextTwo.Text); 

      foreach (var dataPair in groups) 
      {      
       // Get data pair group names into list 
       List<string> name = dataPair.Key.Split('|').ToList(); 

       // ====== Make table 
       Table resultTable = new Table(); 
       resultTable.Attributes["class"] = "displayTable"; 
       resultList.Controls.Add(resultTable); 

       // ====== Add table info row 
       TableRow groupInfo = new TableRow(); 
       groupInfo.Attributes["class"] = "groupInfoLabel"; 

       // add row to table 
       resultTable.Rows.Add(groupInfo);      

       // create cell with information 
       TableCell infoCell = new TableCell(); 
       infoCell.Text = "MRN: "+name[0]+", Name: " + name[1]; 
       infoCell.ColumnSpan = 3; 

       // add cell to row 
       groupInfo.Cells.Add(infoCell); 

       // ====== Make column label row 
       TableRow labelRow = new TableRow(); 
       labelRow.Attributes["class"] = "columnLabel"; 

       // add row to table 
       resultTable.Rows.Add(labelRow); 

       // make an array of column lables 
       string[] cellNames = new string[] { "Visit Date", "Document Type", "Doctor ID" }; 

       // add column lables to row 
       foreach (string s in cellNames) 
       { 
        TableCell labelCell = new TableCell(); 
        labelCell.Text = s; 
        labelRow.Cells.Add(labelCell); 
       } 

       // Add display names to table 
       foreach(var nameList in dataPair.Value) 
       { 
        TableRow nameRow = new TableRow(); 
        nameRow.Attributes["class"] = "columnInfo"; 


        for (int i = 0; i < 3; i++) 
        { 
         TableCell nameCell = new TableCell(); 
         nameCell.Text = nameList[i]; 
         nameRow.Cells.Add(nameCell); 
        } 
        resultTable.Rows.Add(nameRow); 
       }      
      }  

     } 
     catch(Exception ex) 
     { 
      // Display the error and write to log 
      resultListLabel.Style.Add("Display", "Inline-Block"); 
      writeLog("Failed to generate tables", ex.ToString()); 
     } 

    } 
+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellclick.aspx –

+0

@AlexKrups - 這是一個'Table'不是'DataGridView',你發送的鏈接是對於WinForms而不是Asp.Net – Ric

+0

你想在整行上做,而不是簡單地將一個按鈕添加到單元格? – Ric

回答

0

這是我必須做的:

  1. 到名爲tableCall加入一個全球性的布爾到C#代碼
  2. 將searchButton_Click中的代碼移動到Page_Load方法中的if(tableCall)語句中。

    protected void Page_Load(object sender ,EventArgs e){ 
        ... 
        if(tableCall){ 
         //Do stuff from searchButton_Click 
        } 
        ... 
    } 
    
  3. add tableCall = true;和的Page_Load(發件人,e)要求searchButton_Click
  4. 修改for循環添加按鈕在單元像這樣: //添加顯示名稱表 的foreach(在dataPair.Value變種名稱列表) { 的TableRow nameRow =新的TableRow(); nameRow.Attributes [「class」] =「columnInfo」;

    // Add display names to table 
    foreach (var nameList in dataPair.Value) 
    { 
        TableRow nameRow = new TableRow(); 
        nameRow.Attributes["class"] = "columnInfo"; 
    
        for (int i = 0; i < 3; i++) 
        { 
         TableCell nameCell = new TableCell(); 
         nameRow.Cells.Add(nameCell); 
    
         Button b = new Button(); 
         b.Attributes["class"] = "docButton"; 
         b.Attributes.Add("DWdocid", nameList[3]); 
         b.Text = nameList[i]; 
         b.Click += new EventHandler((s, ea) => test(s, ea, b.Attributes["DWdocid"])); 
    
         nameCell.Controls.Add(b); 
        } 
        resultTable.Rows.Add(nameRow); 
    } 
    

這增加一個按鈕,每三個小區的行中的,但增加了相同的文件ID的每個在該行中的按鈕中的,所以在任何地方用戶點擊在該行上(除1px邊框)將在傳遞文檔ID時調用C#代碼中的方法。我敢肯定,有了更好的CSS技巧,有人可以讓按鈕跨越所有三個單元格。

+0

如果你想讓它跨越3個單元格,設置屬性'RowSpan = 3',這樣'nameCell.RowSpan = 3;' – Ric

相關問題