У меня есть элемент управления Gridview, и я поместил RadioButton в itemtemplate. Когда я нажимаю кнопку, я пытаюсь получить проверенное свойство переключателя. Но когда я нажимаю проверенное свойство, всегда возвращается false. Пожалуйста, ознакомьтесь с приведенным ниже кодом и сообщите мне, где я ошибаюсь.
Код aspx
<asp:GridView ID="gvDepartments" runat="server" AutoGenerateColumns="False" GridLines="None"AllowPaging="true" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:RadioButton ID="rdbtn" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="lbl" runat="server"></asp:Label>
<asp:Button ID="btn" runat="server" Text="Save" OnClick="btn_Click" CssClass="button small"/>
Код за нажатием кнопки
foreach (GridViewRow row in gvDepartments.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
RadioButton rd = (RadioButton)row.FindControl("rdbtn");
lbl.Text += rd.Checked.ToString();// +rd1.Checked.ToString();
}
}
Результат всегда будет всегда ложным в метке. Я использую Ajaxcontroltoolkit в приложении, над элементами управления присутствуют в панели обновления, и я даже пытался помещать кнопку и событие в триггеры, но результат такой же. Пожалуйста помоги.
С Уважением,
Nuthan AR
Когда вы назначаете и загружаете DataSource
GridView
? Обратите внимание, что вы должны сделать это, только if(!IsPostBack)
а не на каждой обратной if(!IsPostBack)
. Поэтому используйте свойство Page.IsPostBack
.
Предположим, что вы используете Page_Load
для этого:
protected void Page_Load(Object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
DataBindGridView(); // method that assigns DataSource and calls DataBind
}
}
DataSource
вGridView
? Обратите внимание, что вы должны делать это толькоif(!IsPostBack)
а не при каждой обратнойif(!IsPostBack)
.