将值更改为DataGrid单元格

将值更改为DataGrid单元格

问题描述:

我在我的代码隐藏功能中设置了一个数据网格。我创建一个新的空白列,并将其添加到我的数据网格,我想为列添加一个值只有一行匹配对象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> 

我觉得这应该是简单,但我想不出为什么它不具有约束力。

我想出了在尝试更改内容之前必须绑定数据。我结束了这个:

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"; 
    } 
} 

当我看到您要添加一列dgExistingContacts,然后分配contactListdgExistingContactsDataSource这意味着你首先添加列,然后在此代码重置DaraGrid前任DataSource

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

我认为当你将DataSource指定为GridView,那么您在其中更改的任何内容都将被重置。因此,可能通过从代码中删除dgExistingContacts.DataSource = contactList;,您的问题将得到解决。

尝试处理GridViewRowDataBound事件并在其中添加值。