2012-09-28 13 views
0

我要綁定從數據表如何從數據表

網格視圖中添加文本標籤裏面的GridView
var dt = new DataTable(); 
    dt.Columns.Add("nrtest"); 
    dt.Columns.Add("asd"); 
    dt.Columns.Add("dsa"); 
    dt.Columns.Add("qwe"); 
    dt.Columns.Add("ewq"); 

    dt.Rows.Add("test1","","","",""); 
    dt.Rows.Add("test2","","","",""); 
    dt.Rows.Add("test3","","","",""); 


    mygrid.DataSource = dt; 
    mygrid.DataBind(); 
在我的網格

第一列包含標籤

我想從數據表第一列添加第一列DVIEW

我想是這樣的:

foreach(GridViewRow gdRow in mygrid.Rows) 
      { 
       if (gdRow.RowType == DataControlRowType.DataRow) 
        { 
      var label1 = (Label) gdRow.Cells[1].FindControl("myLabel"); 
         text1.Text = text1; 

      var label2 = (Label) gdRow.Cells[1].FindControl("myLabel"); 
         text2.Text = text2; 

      var label3 = (Label) gdRow.Cells[1].FindControl("myLabel"); 
         text3.Text = text3; 
      } 
     } 
    but it doesn't work, at the end all the labels contain text3 

我的GridView:

<asp:GridView ID="mygrid" runat="server" AutoGenerateColumns="False" 
       Visible="True" width="600px" onrowcreated="GdOrarRowCreated"> 

      <Columns> 
         <asp:TemplateField > 
          <HeaderTemplate> 
        <asp:Label ID="text" runat="server" Text="text" ></asp:Label> 
          </HeaderTemplate> 
          <ItemTemplate> 
           <asp:Label runat="server" ID="myLabel" /> 
          </ItemTemplate> 
         </asp:TemplateField> 

    <asp:BoundField DataField="asd" Visible="True" HeaderText="col2"/> 
    <asp:BoundField DataField="dsa" Visible="True" HeaderText="col3"/> 
    <asp:BoundField DataField="qwe" Visible="True" HeaderText="col4"/> 
    <asp:BoundField DataField="ewq" Visible="True" HeaderText="col5"/> 

         </Columns> 
        </asp:GridView> 
+0

請發表您的GridView標記 –

回答

1

您正在爲所有3個標籤分配相同的ID。給他們一個唯一的ID然後嘗試。因爲它分配一個值

有你的代碼中的一些其他問題,不過,你可以嘗試像

var dt = new DataTable(); 
    dt.Columns.Add("nrtest"); 
    dt.Columns.Add("asd"); 
    dt.Columns.Add("dsa"); 
    dt.Columns.Add("qwe"); 
    dt.Columns.Add("ewq"); 

    dt.Rows.Add("test1", "", "", "", ""); 
    dt.Rows.Add("test2", "", "", "", ""); 
    dt.Rows.Add("test3", "", "", "", ""); 


    mygrid.DataSource = dt; 
    mygrid.DataBind(); 

做的東西什麼,然後你可以使用網格綁定一個循環,這將允許你得到的行索引更容易,你可以用綁定的rowIndex然後:

var rows = mygrid.Rows; 
    for(int i=0,j=rows.Count; i<j;i++) 
    { 
     var row = rows[i]; 
     if (row.RowType == DataControlRowType.DataRow) 
     { 
      var label1 = (Label)row.Cells[1].FindControl("myLabel"); 
      //use rowindex i and colindex "nrtest" to get data from dt 
      label1.Text = dt.Rows[i]["nrtest"].ToString(); 
     } 
    } 

電網代碼將保持相同的問題

<asp:GridView ID="mygrid" runat="server" AutoGenerateColumns="False" Visible="True" 
    Width="600px"> 
    <Columns> 
     <asp:TemplateField> 
      <HeaderTemplate> 
       <asp:Label ID="text" runat="server" Text="text"></asp:Label> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <asp:Label runat="server" ID="myLabel" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="asd" Visible="True" HeaderText="col2" /> 
     <asp:BoundField DataField="dsa" Visible="True" HeaderText="col3" /> 
     <asp:BoundField DataField="qwe" Visible="True" HeaderText="col4" /> 
     <asp:BoundField DataField="ewq" Visible="True" HeaderText="col5" /> 
    </Columns> 
</asp:GridView> 
0

你是所有3個標貼分配相同的ID。 給他們一個唯一的ID然後嘗試。