Ответ Энтони также отлично сработал для меня, хотя я делаю вещи немного по-другому.Моя цель - отображать информацию, связанную с подачей налоговых деклараций и электронными переводами средств.
Я использую RadioButtonList в шаблоне ItemTemplate.Каждый добавленный элемент имеет свое собственное значение («Y» или «N»), которое соответствует строке, хранящейся в базе данных.
<asp:TemplateField HeaderStyle-CssClass="TableHeader" HeaderText="Pay Estimate by EFT?" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:RadioButtonList ID="rdoPayEstbyEFT" runat="server">
<asp:ListItem Value="Y">Yes</asp:ListItem>
<asp:ListItem Value="N">No</asp:ListItem>
</asp:RadioButtonList>
</ItemTemplate>
</asp:TemplateField>
Я создал класс с именем EFT, чтобы определить все данные, которые я получаюв моем операторе LINQ to SQL
public class EFT
{
public int JUR_ID {get; set;}
public string JUR_NAME {get; set;}
public DateTime FYE {get; set;}
public int STATE {get; set;}
public string ENT_NAME { get; set; }
public string ENT_ABBREV { get; set; }
public string TYPE_NAME { get; set; }
public int RETURN_ID { get; set; }
public string EFT_EST { get; set; }
public string EFT_EXT { get; set; }
public string EFT_RETURN { get; set; }
}
затем изменил LINQ to SQL, чтобы выбрать новый экземпляр этого класса (юрисдикции, сущность, типы налогов и возвращает все ссылочные объединения, которые здесь не отображаются).
select new EFT {JUR_ID = jurisdictions.ID, JUR_NAME = jurisdictions.NAME, FYE = jurisdictions.FYE.Value , STATE = jurisdictions.STATE.Value , ENT_NAME = (entity.NAME.Contains(",") ? entity.NAME.Substring(0, entity.NAME.IndexOf(",") -1).ToString() : entity.NAME ), ENT_ABBREV = entity.ABBREV, TYPE_NAME = taxtypes.TYPE, RETURN_ID = returns.RETURN_ID.Value, EFT_EST = returns.EFT_EST, EFT_EXT = returns.EFT_EXT, EFT_RETURN = returns.EFT_RETURN }
).ToList();
Затем в моем RowDataBound я извлекаю значение «Y» или «N» из базы данных и присваиваю эту строку выбранному значению.
RadioButtonList rdoPayEstbyEFT = (RadioButtonList)e.Row.FindControl("rdoPayEstbyEFT");
EFT rowView = (EFT)e.Row.DataItem;
string strESTbyEFT = rowView.EFT_EST.ToString();
rdoPayEstbyEFT.SelectedValue = strESTbyEFT;
Работает как шарм!