2015-05-28 1 views
0

Проверьте/выберите только одну радио-кнопку в сетке решетки или сетке с помощью пейджинга и любого PageSize на стороне сервера Код взади C#Выберите только один RadioButton в RadGrid с пейджингом и любой PageSize на стороне сервера Код в C# ASP.NET

My Aim должен поддерживать выбранный пользователем asp: RadioButton внутри telerik: RadGrid выбирается/проверяется даже при подкачке сетки и с любым размером страницы.

Задачи, с которыми я сталкиваюсь, не могут поддерживать уникальное имя группы для каждого присутствующего RadioButton для каждой строки в Grid. Из-за этого мне приходится обрабатывать эту функциональность в коде.

Как бы я ни пытался искать интернет для решения, на котором я нашел ответы на javascript с большим количеством работы, вокруг которой я не доволен ими.

<telerik:RadGrid ID="rgWithPaging" AllowPaging="True" CellSpacing="0" GridLines="None" 
       AllowSorting="True" runat="server" AutoGenerateColumns="False" 
       AllowFilteringByColumn="true" EnableLinqExpressions="false" 
       PagerStyle-PageSizeControlType="RadDropDownList" PagerStyle-AlwaysVisible="true" Visible="true" 
       OnNeedDataSource="rgWithPaging_NeedDataSource"> 
........... 
    <telerik:GridTemplateColumn HeaderText="Check One" HeaderStyle-CssClass="gradient" AllowFiltering="false" HeaderStyle-Width="10%"> 
    <ItemTemplate> 
     <asp:RadioButton ID="rbWPFileName" runat="server"/> 
    </ItemTemplate> 
    </telerik:GridTemplateColumn> 
........... 
</telerik:RadGrid> 
+0

Паван, вы хотите опубликовать свой ответ как «ответ», а не как часть вашего вопроса. –

+0

Okay Grant Winney Я новичок здесь, спасибо за предложение. –

ответ

0

Ответ я придумал стороне сервера код за это, как указано ниже:

<telerik:RadGrid ID="rgWithPaging" AllowPaging="True" CellSpacing="0" GridLines="None" 
       AllowSorting="True" runat="server" AutoGenerateColumns="False" 
       AllowFilteringByColumn="true" EnableLinqExpressions="false" 
       PagerStyle-PageSizeControlType="RadDropDownList" PagerStyle-AlwaysVisible="true" Visible="true" 
       OnNeedDataSource="rgWithPaging_NeedDataSource" OnDataBound="rgWithPaging_OnDataBound"> 
........... 
    <telerik:GridTemplateColumn HeaderText="Check One" HeaderStyle-CssClass="gradient" AllowFiltering="false" HeaderStyle-Width="10%"> 
    <ItemTemplate> 
     <asp:RadioButton ID="rbWPFileName" runat="server" AutoPostBack="true" OnCheckedChanged="rbWPFileName_OnCheckedChanged"/> 
    </ItemTemplate> 
    </telerik:GridTemplateColumn> 
........... 
</telerik:RadGrid> 

теперь в коде позади, чтобы достичь этого нам нужно только два события

OnCheckedChanged = "rbWPFileName_OnCheckedChanged" и OnDataBound = "rgWithPaging_OnDataBound"

В коде позади:

protected void rbWPFileName_OnCheckedChanged(object sender, EventArgs e) 
     { 
      var rbtnSelected = sender as RadioButton; 
      if (rbtnSelected == null) return; 
      foreach (GridDataItem item in rgWithPaging.Items) 
      { 
       var radFileName = (RadioButton)item.FindControl("rbWPFileName"); 
       if (radFileName == null) return; 
       radFileName.Checked = rbtnSelected.ClientID == radFileName.ClientID; 
       if (radFileName.Checked) 
       { 
        var position = (rgWithPaging.PageSize*rgWithPaging.CurrentPageIndex) + item.ItemIndex; 
        Session["Position"] = position; 
       } 
      } 
     } 

protected void rgWithPaging_OnDataBound(object sender, EventArgs e) 
    { 
     if (Session["Position"] == null) return; 
     var position = (int)Session["Position"]; 
     var pageIndex = position/rgWithPaging.PageSize; 
     var itemIndex = position%rgWithPaging.PageSize; 

     if (pageIndex == rgWithPaging.CurrentPageIndex) 
     { 
      foreach (GridDataItem item in rgWithPaging.Items) 
      { 
       var radFileName = (RadioButton)item.FindControl("rbWPFileName"); 
       if (radFileName == null) return; 
       radFileName.Checked = itemIndex == item.ItemIndex; 
      } 
     } 
    } 

, что это его задача сделать !!! наслаждайтесь .. :-)

Смежные вопросы