簡體   English   中英

Telerik Grid客戶端行選擇

[英]Telerik Grid Client-Side Row Selection

我已經在Stackoverflow和Telerik上徹底研究了這些問題,但仍然沒有找到解決這些問題的方法。 這就是我想要做的。 我有一個使用Linq進行數據綁定的RadGrid控件。 根據用戶的行選擇,我想從數據庫中查詢其他信息,並將其放入另一個控件中(假設當前其他控件是Rad Listview)。 我想在所有客戶端執行此操作,而不必將整個頁面發布回服務器。 另外,我嘗試在頁面上放置一個按鈕,以將行選擇發送回服務器,以觸發隱藏代碼中的某些操作。

如果有人可以向我展示如何執行以下操作,我將非常樂意:

  1. 使用Javascript獲取用戶行選擇,並在另一個控件中填充該選擇的鍵值(使用Telerik客戶端行選擇,而不是通常的asp.net選擇鏈接)
  2. 使用上一個問題的鍵值發出Ajax請求,以從數據庫中檢索一些其他信息。 我假設我將在服務器端使用Linq來處理此請求。 刷新另一個控件以顯示該信息。
  3. 在頁面上放置一個按鈕,將第一個問題的鍵值發布回服務器,該鍵值將被捕獲並存儲在變量中。

我意識到上面的1-3中存在很多重疊,但是我希望通過像我一樣突破,可以更好地理解asp.net + telerik中客戶端和服務器端代碼如何交互的機制。環境。

以下是一些對我有用的相關文章:

//我會發布其他鏈接,因此我的SO信譽得分不允許我這樣做

這是我頁面上的一些代碼。 我的網格中的相關鍵值是package標簽。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

這是標題
  <!-- Begin Navigation --> <div id="navigation"> This is the Navigation </div> <!-- End Navigation --> <!-- Begin Faux Columns --> <div id="faux"> <!-- Begin Left Column --> <div id="leftcolumn"> This is the left column <telerik:RadTreeView ID="RadTreeView1" Runat="server" Skin="Telerik"> <Nodes> <telerik:RadTreeNode runat="server" Expanded="True" Text="My Account"> <Nodes> <telerik:RadTreeNode runat="server" Text="Inventory"> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Text="Protection Plan"> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Text="Addresses"> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Text="Profile"> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Text="Alert Preferences"> </telerik:RadTreeNode> </Nodes> </telerik:RadTreeNode> <telerik:RadTreeNode runat="server" Text="Supplies"> </telerik:RadTreeNode> </Nodes> </telerik:RadTreeView> </div> <!-- End Left Column --> <!-- Begin Content Column --> <div id="content"> This is the main body where the inventory stuff goes <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <%--Needed for JavaScript IntelliSense in VS2010--%> <%--For VS2008 replace RadScriptManager with ScriptManager--%> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" /> </Scripts> </telerik:RadScriptManager> <script type="text/javascript"> //Put your JavaScript code here. </script> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> </telerik:RadAjaxManager> <div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <telerik:RadTabStrip ID="RadTabStrip1" runat="server" ontabclick="RadTabStrip1_TabClick" SelectedIndex="2" AutoPostBack="True" Skin="Vista"> <Tabs> <telerik:RadTab runat="server" Text="Pending"> </telerik:RadTab> <telerik:RadTab runat="server" Text="In Storage"> </telerik:RadTab> <telerik:RadTab runat="server" Text="Returned" Selected="True"> </telerik:RadTab> </Tabs> </telerik:RadTabStrip> <telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True" CellSpacing="0" GridLines="None" AutoGenerateColumns="False" Skin="Vista" Width="654px"> <ClientSettings> <Selecting AllowRowSelect="True" /> <Scrolling AllowScroll="True" UseStaticHeaders="True" /> <ClientEvents OnGridCreated="GridCreated" OnRowSelected="RowSelected"></ClientEvents> </ClientSettings> 

        <SelectedItemStyle BackColor="White" />

  <SelectedItemStyle BackColor="White" /> 

如果您說的是真正的客戶端腳本,則網格應將選擇內容傳遞給Web服務,並通過其客戶端API填充下一個控件(如果RadListView支持客戶端綁定,那么我不確定它確實)。 絕對有可能,但是比下面的解決方案要多得多的工作。 然而:

如果仍然要回發到服務器,為什么要在客戶端填充listview? 客戶端填充的所有數據都會丟失(因為它沒有存儲在viewstate中),因此如果您將其回發到服務器以存儲變量,則客戶端綁定將無濟於事。 自進行Telerik以來,最簡單的方法是在網格上設置ClientSettings.EnablePostBackOnRowClick="true" ,並在標記或代碼中設置ClientSettings.Selecting.AllowRowSelect="true" 然后,將這兩個控件包裝在RadAjaxPanel中,以便在發生回發時,可以通過代碼處理所有這些控件。

當單擊網格的行時,它回發,所有事件都在服務器端起作用,該值存儲在變量中(只要將其存儲在會話,緩存,viewstate中),然后就可以填充列表視圖。

HTH。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM