将值更改为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
,然后分配contactList
为dgExistingContacts
DataSource
这意味着你首先添加列,然后在此代码重置DaraGrid
前任DataSource
:
dgExistingContacts.Columns.Add(reqColumn);
dgExistingContacts.DataSource = contactList;
我认为当你将DataSource
指定为GridView
,那么您在其中更改的任何内容都将被重置。因此,可能通过从代码中删除dgExistingContacts.DataSource = contactList;
,您的问题将得到解决。
答
尝试处理GridView
的RowDataBound
事件并在其中添加值。