【问题标题】:ASPxGridView1.Selection is always = 0 and ASPxGridView1.GetSelectedFieldValues doesnt workASPxGridView.Selection 总是 = 0 并且 ASPxGridView.GetSelectedFieldValues 不起作用
【发布时间】:2012-12-13 03:08:16
【问题描述】:

只是我试图从 devexpress gridview 中获取选定的行,但它对我来说从来没有用过,我尝试过客户端和自定义回调,并尝试过服务器端,但它没有用,花了 10 个小时搜索并尝试了每一个我得到了解决方案,但对我没有任何效果,有人可以给我一个提示,我缺少什么吗?,这是代码:

default.aspx:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
    </script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <div>

        <dx:ASPxGridView ID="ASPxGridView1" ClientInstanceName="ASPxGridView1"  KeyFieldName="ID" AutoGenerateColumns="False" runat="server">
            <Columns>
                <dx:GridViewCommandColumn ShowSelectCheckbox="True" VisibleIndex="0" 
                    Caption="Select" Name="Select">
                </dx:GridViewCommandColumn>
                <dx:GridViewDataTextColumn Caption="ID" FieldName="pag_id_pk" Name="ID" 
                    VisibleIndex="1">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="Name" FieldName="pag_name" Name="Name" 
                    VisibleIndex="2">
                </dx:GridViewDataTextColumn>
                <dx:GridViewDataTextColumn Caption="Title" FieldName="pag_title" Name="Title" 
                    VisibleIndex="3">
                </dx:GridViewDataTextColumn>
            </Columns>
        </dx:ASPxGridView>
        <dx:ASPxButton ID="ASPxButton1" runat="server" AutoPostBack="False" Text="Get Values" UseSubmitBehavior="False" onclick="ASPxButton1_Click" />
    </div>
</asp:Content>

default.cs:

public partial class _Default : System.Web.UI.Page
{
    DataTable table = null;
    protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack && !IsCallback)
        {
            string connectionString = ...
            con.Open();
            SqlDataReader rd;
            SqlCommand cmd = new SqlCommand("SELECT * FROM [Pages]", con);
            rd = cmd.ExecuteReader();

            DataTable dt = new DataTable();
            dt.Load(rd);

            ASPxGridView1.DataSource = dt;

            Session["dt"] = (DataTable)dt;
            ASPxGridView1.DataBind();
            rd.Close();
            con.Close();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ASPxButton1_Click(object sender, EventArgs e)
    {
        List<object> indexes = new List<object>();
        for (int i = 0; i < ASPxGridView1.VisibleRowCount; i++)
        {
            if (ASPxGridView1.Selection.IsRowSelected(i))
            {
                indexes.Add(ASPxGridView1.GetRowValues(i, ASPxGridView1.KeyFieldName));
            }
        }

        foreach (var selectedKey in ASPxGridView1.GetSelectedFieldValues(ASPxGridView1.KeyFieldName))
        {
            if (!indexes.Contains(selectedKey))
                ASPxGridView1.Selection.UnselectRowByKey(selectedKey);
        }
    }

提前谢谢...

更新: 当我使用“asp:SqlDataSource”时它工作正常。

【问题讨论】:

  • 不使用SqlDataSource(而不是SqlDataReader)有什么原因吗?
  • 是的,上面的代码只是我面临的问题的一个例子,在实际代码中我必须根据其他因素动态更改数据源和查询。

标签: asp.net gridview devexpress aspxgridview


【解决方案1】:

您是否尝试过在回发/回调期间进行数据绑定?我认为您的网格不知道您的按钮单击事件中有哪些行。

【讨论】:

  • 感谢您的回答,我通过添加数据绑定修改了 page_int 代码,但仍然没有工作
  • @Yasser 为什么将 autopostback 和 usesubmitbehavior 设置为 false?您是否真的进入按钮事件并看到在 ASPxGridView1.Selection 中没有选择任何行?
  • 是的,当单击按钮时,我正在调用“ASPxButton1_Click”方法,使用调试模式我检查了 ASPxGridView1.Selection 并且始终 = 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
  • 2011-05-28
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多