我有一个telerik radgrid,在编辑模式下的一列中有一个超链接。我希望将超链接的文本设置为它链接到的页面的页面标题,而不为此创建隐藏字段。我从数据库调用中获取此标题,我将传递正在编辑的网格中当前行的ID。由于ItemDataBound方法始终在实际行本身之前绑定GridEditableItem ,因此MasterTableView在下一次迭代之前不包含我需要的ID。
我提出的丑陋的解决方案是保留对超链接的引用,并在下一次迭代时填充它,此时ID现在可以在网格上使用。
我似乎认为有更好的解决方案!
protected void grid_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
link = ((e.Item as GridEditableItem)["myHyperlink"].Controls[1] as HyperLink);
go1 = true;
}
if(go2)
{
string myID = grid.MasterTableView.Items[grid.Items.Count - 1].GetDataKeyValue("myID").ToString();
string pageId= PoolAgent.getPageId(Int32.Parse(myID));
link.Text = pageId;
go2 = false;
go1 = false;
}
if (go1)
go2 = true;
ASPX:
<telerik:GridBoundColumn DataField="myID" UniqueName="myID" HeaderText="ID" ReadOnly="true">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn EditFormColumnIndex="2" UniqueName="myHyperlink" HeaderText="Link:" ItemStyle-HorizontalAlign="Center" Display="False" >
<ItemTemplate>
</ItemTemplate>
<EditItemTemplate>
<asp:Hyperlink ID="KeyManagerLink" Runat="server" NavigateUrl='' onclick="popupwindow(this.href, 'popupwindow', 1150, 500); return false;"></asp:Hyperlink>
</EditItemTemplate>
</telerik:GridTemplateColumn>