2015-08-21 61 views
1

对于c#,asp.net和Visual Studio,我很新,我的平常阵容是Java与Eclipse(和Captain Casa)。C#ASP.net使用ImageButton填充GridView

所以我的实际问题是以下几点。

  DataTable lowerTable = new DataTable(); 

     // create columns 
     for (int i = 0; i < logic.gameSize; i++) 
     { 
      lowerTable.Columns.Add(); 
     } 

     for (int j = 0; j < logic.gameSize; j++) 
     { 
      // create a DataRow using .NewRow() 
      DataRow row = lowerTable.NewRow(); 


      // iterate over all columns to fill the row 
      for (int i = 0; i < logic.gameSize; i++) 
      { 
       ImageButton button = new ImageButton(); 
       button.ImageUrl = ""; 
       button.AlternateText = logic.getValue(logic.bord.getLowerBord()[j, i].getFigur()).ToString(); 

       row[i] = button; 
      } 

      // add the current row to the DataTable 
      lowerTable.Rows.Add(row); 
      LowerField.Controls.Add(new ImageButton()); 
      LowerField.DataSource = lowerTable; 
      try 
      { 
       LowerField.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       System.Diagnostics.Debug.Write(ex.ToString()); 
      } 
     } 
    } 

进出口创造一个DataTable,以填补我的GridView ......但结果不是预期的电网全按键的,但充满了文字网格:System.Web.UI.WebControls.ImageButton。 我已经尝试使用全球化的按钮,但这也没有帮助。 我忽略了一个简单的机械师吗?我实际上找不到任何适合Google的东西,或者至少没有符合我的实际需求的东西。

希望你可以帮助 谢谢 Bienenwolf

+1

你需要使用ASP.NET控件,比如'GridView'或者'ListView'(或者其他众多的控件)。如果你想动态地做,[这是一个链接](https://code.msdn.microsoft.com/AddDynamicallyControlstoGri-d74fe84f)。否则,就像在控件的ASPX代码中设置一个'ItemTemplate' [像这样](https://msdn.microsoft.com/en-us/library/Bb288031.aspx) - 只需更改模板字段包含一个'ImageButton'。 – TestWell

+0

您的第一个链接非常有用,谢谢。我现在如何修复它:使用OnDataBound函数添加控件。 – Bienenwolf

回答

0

您可以创建这样的模板字段网格视图内的按钮:

//Put the a key value in DataKeyNames so you can get it in case of editing 
<asp:GridView ID="gdvValores" runat="server" AutoGenerateColumns="False" DataKeyNames="id"> 
<asp:TemplateField HeaderText="Edit"> 
         <ItemTemplate> 
          <asp:Button ID="btnEditar" CssClass="btnEditar" runat="server" OnClick="btnEditar_Click" /> 
         </ItemTemplate> 
         <ItemStyle HorizontalAlign="Center" Width="35px" /> 
        </asp:TemplateField> 

而在的.cs

protected void btnEditar_Click(object sender, EventArgs e) 
{ 
//Get rowidex of gridview 
    int linha = ((System.Web.UI.WebControls.GridViewRow)(((System.Web.UI.Control)(sender)).BindingContainer)).RowIndex; 
//Get the ID in case of editing a item 
    ViewState["codigo"] = gdvValores.DataKeys[linha]["id"].ToString();  

}