2015-08-21 2 views
1

Я довольно новичок в C#, asp.net и Visual Studio, мой обычный состав - это Java с Eclipse (и Captain Casa).C# ASP.net Populate GridView с ImageButton

Так что моя фактическая проблема заключается в следующем.

  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()); 
      } 
     } 
    } 

Im создание DataTable, чтобы заполнить мой GridView ... Но результат не ожидаемая Сетка полной пуговиц, но сетка заполнен текстом: System.Web.UI.WebControls.ImageButton. Я все пытался использовать глобализованную кнопку, но это тоже не помогло. Я упускаю из виду простой механик? На самом деле я не мог найти ничего подходящего для Google или, по крайней мере, ничего, что бы соответствовало моим фактическим потребностям.

Надеется, что вы могли бы помочь Спасибо Bienenwolf

+1

Вы необходимо использовать элемент управления ASP.NET, такой как «GridView» или «ListView» (или любой из многочисленных других). Если вы хотите сделать это динамически, [здесь ссылка] (https://code.msdn.microsoft.com/AddDynamicallyControlstoGri-d74fe84f). В противном случае это так же просто, как настроить «ItemTemplate» какого-то типа в коде ASPX вашего элемента управления [например, это] (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();  

} 
Смежные вопросы