2010-05-26 62 views
4

我正在使用帶分頁的gridview。我的網格有一個命令列,ShowSelectCheckbox設置爲true。我使用條件[if (!IsCallback)]將DataTable綁定到了網格Page_Load事件。Devexpress ASPxGridView GetSelectedFieldValues無法獲取值

所以當我改變頁面索引數據丟失。之後,我寫了綁定代碼到網格的PageIndexChanged事件。現在它就像魅力一樣。

GetSelectedFieldValues僅在SelectionChanged事件發生時才起作用。

在例子中,當我在第一頁選擇一行時,它獲取我想要的字段值。但是,當我改變pageindex GetSelectedField無法獲得字段值。它提醒空文本。

如果我在第二頁索引處選擇一行,它也可以在該頁面上工作,但是當我更改頁面索引時,它又被打破了。

順便說一句,它的工作原理當我綁定網格在PageLoad事件沒有!IsCallback條件但我不能綁定它在Page_Load事件,因爲其他控件必須改變查詢等數據。

這裏去哪些警報選定值

<ClientSideEvents SelectionChanged="function(s, e) { 
    grid.GetSelectedFieldValues('SDNO;SANTRAL',alert); 
}" /> 

和頁面索引改變事件我的javascript功能

protected void myGrid_PageIndexChanged(object sender, EventArgs e) 
    { 
     myGridDataSource = dtable; //dtable is static, i also used BindThat function here too. But no way out. 
     myGridDataBind(); 
    } 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsCallback) 
    { 
     BindThat(); // Fetch data from db, create dtable and bind it to grid. 
    } 
} 

回答

1

我覺得這不是在客戶端獲得來自電網的價值的正確方法,請檢查以下鏈接: http://www.devexpress.com/Support/Center/p/Q94237.aspx

[JScript] 
function Button1_onclick() { 
    ASPxGridView1.GetSelectedFieldValues("CategoryID;CategoryName", OnGetSelectedFieldValues); 
} 

function OnGetSelectedFieldValues(result) { 
    for(var i = 0; i < result.length; i ++) 
     for(var j = 0; j <result[i].length; j++) { 
      alert(result[i][j]); 
     } 
} 

問題:你的電網支持多選?

EDIT1: 檢查下面的例子還有:

How to use a GetSelectedFieldValues method to obtain values of several columns at once

How to get the values of the selected record from the server

+0

那麼我可以得到值,如果我綁定網格在page_load。所以我的問題不在於獲取它們。我不知道如何,但它不能只在頁面索引更改後才加載值。另外,如果我改變頁面索引而不從第一頁選擇任何項目,它在新頁面上工作。 是的,它支持多選。 – 2010-05-26 13:42:33

+0

韋爾我檢查了其他解決方案,我認爲它會工作。但這是使用GetSelectedFieldValues獲取值的最簡單方法。 但我無法找到爲什麼它不起作用,而綁定網頁pageindexchange事件。 – 2010-05-26 14:03:16

0

你可能想嘗試網格關閉回調。我發現這解決了我在網格中遇到的一些問題。我不確定這會起作用,但它可能值得一試。

<dxwgv:ASPxGridView ID="xgvMyGrid" runat="server" AutoGenerateColumns="False" 
EnableCallBacks="False"> 

注意...儘管網格仍然可以正常工作,但這可能會影響其他代碼。

+0

調用回調可能是一個解決方案,但對我來說並不好,因爲它是一個GIS項目,我在同一頁面上有一個地圖。因此,如果我發回尋呼機的網格,則會發送另一個映射服務器的請求。 我知道這個問題可能有一些解決方法,但似乎有點奇怪,我們不能像這樣使用網格。 – 2010-05-30 19:18:37

1

ASPxClientGridView.GetSelectedFieldValues方法發送回調以獲取指定的數據。所以,如果你沒有在這個回調中在服務器端綁定ASPxGridView(並且你實際上沒有 - 因爲條件[if(!IsCallback)]),網格不能返回數據。

順便說一句,這適用於currect頁面,因爲ASPxGridView緩存當前頁面的數據(請參閱EnableRowsCache屬性定義)。

+0

至於PageIndexChanged綁定 - 僅在相應的回調(當您更改頁面時)引發此事件。在GetSelectedFieldValues回調函數中,這個事件不會被觸發。 – Beresta 2010-06-29 11:44:58

0

而且請檢查網格的KeyFieldName。如果未指定此信息或不正確,則可能無法檢索GetSelectedFieldValues客戶端事件中的值。

相關問題