2013-05-07 85 views
1

我在我的代碼隱藏功能中設置了一個數據網格。我創建一個新的空白列,並將其添加到我的數據網格,我想爲列添加一個值只有一行匹配對象ID。由於某些原因,單元格不存儲我設置的文本。有什麼想法嗎?將值更改爲DataGrid單元格

public void SetContacts(IEnumerable<User> contactList, User reqUser) 
    { 
     BoundColumn reqColumn = new BoundColumn(); 
     reqColumn.HeaderText = ""; 
     dgExistingContacts.Columns.Add(reqColumn); 
     dgExistingContacts.DataSource = contactList; 

     foreach (DataGridItem row in dgExistingContacts.Items) 
     { 
      if (row.Cells[0].Text == reqUser.id.ToString()) 
       row.Cells[6].Text = "Requestor"; 
     } 
     dgExistingContacts.DataBind(); 

    } 

這裏是我的DataGrid是否有幫助:

<asp:DataGrid runat="server" ID="dgExistingContacts" AutoGenerateColumns="false" CssClass="styledGray" HeaderStyle-CssClass="head" CellSpacing="1" CellPadding="4" GridLines="None" AlternatingItemStyle-CssClass="even" ItemStyle-CssClass="odd"> 
        <Columns> 
         <asp:BoundColumn DataField="Id" Visible="false" /> 
         <asp:BoundColumn DataField="Title" HeaderText="Role" /> 
         <asp:BoundColumn DataField="LastName" HeaderText="Last Name" ItemStyle-Wrap="false" /> 
         <asp:BoundColumn DataField="FirstName" HeaderText="First Name" ItemStyle-Wrap="false" /> 
         <asp:BoundColumn DataField="Phone" HeaderText="Phone" DataFormatString="{0:(###) ###-####}" /> 
         <asp:BoundColumn DataField="EmailAddress" HeaderText="Email" ItemStyle-Wrap="false" /> 
        </Columns> 
       </asp:DataGrid> 

我覺得這應該是簡單,但我想不出爲什麼它不具有約束力。

回答

0

我想出了在嘗試更改內容之前必須綁定數據。我結束了這個:

public void SetContacts(IEnumerable<User> contactList, User reqUser) 
{ 
    BoundColumn reqColumn = new BoundColumn(); 
    reqColumn.HeaderText = ""; 
    dgExistingContacts.Columns.Add(reqColumn); 
    dgExistingContacts.DataSource = contactList; 
    dgExistingContacts.DataBind(); 
    foreach (DataGridItem row in dgExistingContacts.Items) 
    { 
     if (row.Cells[0].Text == reqUser.id.ToString()) 
      row.Cells[6].Text = "Requestor"; 
    } 
} 
0

當我看到您要添加一列dgExistingContacts,然後分配contactListdgExistingContactsDataSource這意味着你首先添加列,然後在此代碼重置DaraGrid前任DataSource

dgExistingContacts.Columns.Add(reqColumn); 
    dgExistingContacts.DataSource = contactList; 

我認爲當你將DataSource指定爲GridView,那麼您在其中更改的任何內容都將被重置。因此,可能通過從代碼中刪除dgExistingContacts.DataSource = contactList;,您的問題將得到解決。

0

嘗試處理GridViewRowDataBound事件並在其中添加值。

相關問題