【问题标题】:Devexpress ASPxGridView GetSelectedFieldValues Can't get valuesDevexpress ASPxGridView GetSelectedFieldValues 无法获取值
【发布时间】:2010-05-26 13:19:20
【问题描述】:

我正在使用带有分页的网格视图。我的网格有一个命令列,ShowSelectCheckbox 设置为 true。我将DataTable 绑定到Page_Load 事件的网格,条件为[if (!IsCallback)]。

所以当我更改页面索引时,数据会丢失。之后我编写了绑定代码到网格的PageIndexChanged 事件。现在它就像魅力一样发挥作用。

GetSelectedFieldValues 仅在发生SelectionChanged 事件时在第一页起作用。

例如,当我在第一页选择一行时,它会获取我想要的字段值。但是当我更改 pageindex GetSelectedField 时无法获取字段值。它会提醒空文本。

如果我在第二页索引处选择一行,它也可以在该页面上工作,但是当我更改页面索引时,它又被破坏了。

顺便说一句,当我在没有!IsCallback 条件的PageLoad 事件处绑定网格但我无法在Page_Load 事件处绑定它时,它可以工作,因为其他控件必须更改查询和数据。

这是我的 javascript 函数,它会提醒选定的值

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

页面索引更改事件

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.
    }
}

【问题讨论】:

    标签: c# asp.net devexpress


    【解决方案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]);
            }
    } 
    

    问题:您的网格是否支持多选?

    编辑1: 还要检查以下示例:

    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

    【讨论】:

    • 如果我在 page_load 绑定网格,我可以获得值。所以我的问题不在于获得它们。我不确定如何,但只有在页面索引更改后才能加载值。此外,如果我更改页面索引而不从第一页选择任何项目,它会在新页面上工作。是的,它支持多选。
    • Wael 我检查了其他解决方案,我认为它会起作用。但这是使用 GetSelectedFieldValues 获取值的最简单方法。但我找不到为什么它在 pageindexchange 事件中绑定网格时不起作用。
    【解决方案2】:

    ASPxClientGridView.GetSelectedFieldValues 方法发送回调以获取指定数据。因此,如果您没有在此回调上绑定服务器端的 ASPxGridView(实际上您没有 - 因为条件 [ if (!IsCallback) ]),网格将无法返回数据。

    顺便说一句,这适用于当前页面,因为 ASPxGridView 正在缓存当前页面的数据(请参阅 EnableRowsCache 属性定义)。

    【讨论】:

    • 对于 PageIndexChanged 绑定 - 此事件仅在相应的回调中引发(当您更改页面时)。在 GetSelectedFieldValues 回调中,不会触发此事件。
    【解决方案3】:

    您可能想尝试关闭网格的回调。我发现这解决了我在使用网格时遇到的一些问题。我不确定这会奏效,但可能值得一试。

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

    注意...虽然网格应该仍然可以正常工作,但这可能会影响您可能已经拥有的其他代码。

    【讨论】:

    • 转向回调可能是一个解决方案,但对我来说并不好,因为它是一个 GIS 项目,而且我在同一页面上有一张地图。因此,如果我为寻呼机发回网格,则会发送另一个对地图服务器的请求。我知道这个问题可能有一些解决方法,但我们不能像那样使用网格似乎有点奇怪。
    【解决方案4】:

    另外请检查 Grid 的 KeyFieldName。如果此信息未指定或不正确,您也可能无法检索 GetSelectedFieldValues 客户端事件中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多