2012-05-29 3 views
1

У меня есть RadGrid, который на RowClick должен отправить определенное значение серверу. Из-за характера страницы все события обрабатываются на стороне сервера. Мой -Radgrid1- использует по умолчанию «выберите» весь sqldatasource при первом доступе к странице, а затем вы можете фильтровать элементы RadGrid1, щелкнув другой RadGridAnother. который также имеет список различных категорий.Элементы управления не обновляются после RadGrid ItemCommand() выполняется

Что происходит: 1. Строка нажата 2. выполняется radgrid1_ItemCommand (..., ...).

Код Ниже изменен на фактический после Edit:

protected void MenuKampionati_ItemClick(object sender, RadMenuEventArgs e) 
{ 
    Case = 2; 
    Arg1 = "%%"; 
    Arg2 = e.Item.Value; 
    string query = "EXECUTE get_ndeshje_kot31 " + Case.ToString() + ", '" + Arg1 + "', '" + Arg2 + "', 0"; 
    SqlDataSource MyDataSource = new SqlDataSource(ConfigurationManager.ConnectionStrings["basteConnectionString"].ConnectionString, query); 
    this.GridNdeshjet.DataSource = MyDataSource; 
    this.GridNdeshjet.DataBind(); 
} 

3. Страница «освежают» и RadGrid1 имеет старые значения в нем + метка имеет стандартный текст теста.

Я прочел все API Telerik по этому вопросу и попробовал решения previuos впустую. Есть ли что-то, что мне не хватает? или забыть делать? Кто-нибудь знает, почему это может произойти?

Что касается AJAX, мой менеджер дал указание мне не на «AJAX» на этой странице. Надеюсь, мой английский достаточно хорош для этой проблемы.

Редактировать: У меня есть PM о моем запросе, я уже тестировал его в студии управления sqlserver и полностью функциональен. Теперь я добавляю aspx-код div, который содержит эти элементы управления, вне которых есть метки, некоторые aspbutton и ничего больше не связаны с содержимым этого div.

Second Edit, Previous Grids были изменены на RadMenu. Codebehind все тот же, только что связанный с новым меню.

 <div> 
<table> 
    <tr> 

     <td><asp:UpdatePanel ID="panelGetTeGjitha" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" > 
       <ContentTemplate> 
       <telerik:RadMenu ID="MenuKategoria" runat="server" DataSourceID="GetKategoriaDataSource" 
         DataTextField="kategoria" DataValueField="vlera" Flow="Vertical" 
          DataFieldID="kategoria" 
         onitemclick="MenuKategoria_ItemClick"> 
       </telerik:RadMenu> 
        <asp:SqlDataSource ID="GetKategoriaDataSource" runat="server" 
         ConnectionString="<%$ ConnectionStrings:basteConnectionString %>" 
         SelectCommand="Get_Kategorite" SelectCommandType="StoredProcedure"> 
         <SelectParameters> 
          <asp:SessionParameter DefaultValue="0" Name="Country" SessionField="country" 
           Type="Int32" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 
       </ContentTemplate> 
      </asp:UpdatePanel></td> 
     <td><asp:UpdatePanel ID="panelGetKampionati" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" > 
       <ContentTemplate> 
        <telerik:RadMenu ID="MenuKampionati" runat="server" DataSourceID="GetKampionatiDataSource" 
         DataTextField="kampionati" DataValueField="kampionati" Flow="Vertical" 
          DataFieldID="kategoria" onitemclick="MenuKampionati_ItemClick" > 
       </telerik:RadMenu> 
        <asp:SqlDataSource ID="GetKampionatiDataSource" runat="server" 
         ConnectionString="<%$ ConnectionStrings:basteConnectionString %>" SelectCommand="SELECT kampionati FROM ndeshje (NOLOCK) 
      WHERE ((data &gt; getdate() and ndeshje_id_live IS NULL) OR (data &lt; getdate() AND data_hapjes &gt; getdate()         AND ndeshje_id_live IS NOT NULL)) 
      AND bllokuar = '0' AND live = 0 
      GROUP BY kampionati ORDER by kampionati"></asp:SqlDataSource> 
       <telerik:RadGrid ID="GridNdeshjet" runat="server" GridLines="None" 
        onneeddatasource="GridNdeshjet_NeedDataSource1"> 
       </telerik:RadGrid> 
       </ContentTemplate> 
      </asp:UpdatePanel></td> 
     <td><asp:UpdatePanel ID="panelGetNdeshje" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" > 
       <ContentTemplate> 
        <telerik:RadMenu ID="MenuNdeshjeLive" runat="server" DataSourceID="GetNdeshjeLiveDataSource" 
         DataTextField="Home" DataValueField="Home" Flow="Vertical" 
          DataFieldID="Home" onitemclick="MenuKampionati_ItemClick" > 
       </telerik:RadMenu> 
        <asp:SqlDataSource ID="GetNdeshjeLiveDataSource" runat="server" 
         ConnectionString="<%$ ConnectionStrings:basteConnectionString %>" SelectCommand="SELECT MAX(Home) AS Home, MAX(Away) AS Away FROM ndeshje (NOLOCK) 
     WHERE(Data &lt; getdate() AND data_hapjes &gt; getdate() AND ndeshje_id_live IS NOT null AND live = 1) 
     AND bllokuar = '0' GROUP BY Home, Away ORDER BY Home, Away"></asp:SqlDataSource> 
       </ContentTemplate> 
      </asp:UpdatePanel></td> 
    </tr> 
</table> 

ответ

0

Позвольте мне знать, если какой-либо интерес.

<asp:UpdatePanel ID="panelGetKampionati" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <telerik:RadMenu ID="MenuKampionati" runat="server" DataTextField="Name" DataValueField="ID" 
          Flow="Vertical" DataFieldID="ID" OnItemClick="MenuKampionati_ItemClick"> 
         </telerik:RadMenu> 
         <telerik:RadGrid ID="GridNdeshjet" runat="server" GridLines="None" OnNeedDataSource="GridNdeshjet_NeedDataSource1"> 
         </telerik:RadGrid> 
        </ContentTemplate> 
       </asp:UpdatePanel> 

..........

protected void MenuKampionati_ItemClick(object sender, RadMenuEventArgs e) 
{ 

    GridNdeshjet.Rebind(); 
} 

protected void GridNdeshjet_NeedDataSource1(object sender, GridNeedDataSourceEventArgs e) 
{ 

    string strID = string.Empty; // just For Test 


    if (MenuKampionati.SelectedItem != null) 
    { 
     // Get Selected Records as per item selected in RadMenu 

     //Case = 2; 
     //Arg1 = "%%"; 
     string Arg2 = MenuKampionati.SelectedItem.Value; 
     //string query = "EXECUTE get_ndeshje_kot31 " + Case.ToString() + ", '" + Arg1 + "', '" + Arg2 + "', 0"; 
     //SqlDataSource MyDataSource = new SqlDataSource(ConfigurationManager.ConnectionStrings["basteConnection 
     strID = MenuKampionati.SelectedItem.Value; // just For Test 
    } 
    else 
    { 
     // Get All records From DB 
    } 


    // just For Test 
    dynamic data = new[] { 
      new { ID = 1, Name ="Name" + strID}, 
      new { ID = 2, Name ="Name"+ strID}, 
      new { ID = 3, Name ="Name"+ strID}, 
      new { ID = 4, Name ="Name"+ strID}, 
      new { ID = 5, Name ="Name"+ strID}, 
      new { ID = 6, Name = "Name"+ strID} 
     }; 


    GridNdeshjet.DataSource = data; 
} 
+0

Здравствуйте Jayesh, спасибо за ответ. После того, как я увидел ваш ответ, я заметил, что мои две сетки были в разных версиях UpdatePanel, но я поместил их оба в один UpdatePanel, запустил тест, но он не сработал. НО, но я должен добавить, что после перемещения их в том же UpdatePanel, после того, как PostBack RadGrid1 имел старые значения, я случайно нажал кнопку обновления и на этот раз показал мне отфильтрованные данные. Я думаю, что мне не хватает какой-либо настройки здесь, любая идея? – stevenll

+0

Не могли бы вы предоставить свой код страницы aspx? Таким образом, мы сможем решить проблему. –

+0

Я обновил код выше, я оставил сетку, которую хочу обновить на той же самой UpdatePanel, что и RadMenu (сейчас), которая должна его обновить. – stevenll