【问题标题】:n ASP .NET 4.5 SelectMethod is not able to bind data to grid view on button clickn ASP .NET 4.5 SelectMethod 无法在单击按钮时将数据绑定到网格视图
【发布时间】:2013-03-14 13:26:45
【问题描述】:

我正在使用 ASP.Net 4.5,并面临一个关于使用“选择方法”的网格视图数据绑定的问题。

网格也可以在自定义分页上绑定数据。

问题在于过滤数据。我有一个 asp 按钮,通过单击它,我可以使用存储的 proc 获取过滤数据。但这次网格无法调用我在 aspx 页面中提到的方法,用于 SelectMethod 中的网格。

<asp:GridView ID="gEmployee" runat="server"

   AutoGenerateColumns="False"

   OnRowCommand="gEmployee_Command" CellPadding="4"

   OnRowDataBound="gEmployee_RowDataBound"

   AllowCustomPaging="true" PageSize="10" PagerSettings-Visible="false"

   CssClass="mGrid"

   AllowSorting ="true"

   AlternatingRowStyle-CssClass="alt"

ItemType="ModelEntityLayer.ClsEmployee"  SelectMethod="BindGrid" 

   OnSorting ="gEmployee_OnSorting"  HeaderStyle-Wrap="false" DataKeyNames="PropClockNumber" >

上面的代码显示了我为网格视图设置的属性。

public IQueryable<ClsEmployee> BindGrid()


{

    int intTotalPages = 0;

    objBALEmployee = new ClsEmployeeBAL();

    List<ClsEmployee>  employee = null;

    if ((string)Session["QueryResult"] != null)

    {

        employee = objBALEmployee.GetPageWiseData(gEmployee.PageIndex, gEmployee.PageSize, ViewState["SortExpression"] != null ? ViewState["SortExpression"].ToString() : ViewState["ClockNumber"].ToString(),  ViewState["SortOrder"] != null ? ViewState["SortOrder"].ToString() : "asc", ref intTotalPages, ((string)Session["QueryResult"]));

        Session.Remove("QueryResult");

    }

    else

    {

        if (Convert.ToInt32(ViewState["IsEditSearch"]) != 1)

        {

            employee = objBALEmployee.GetPageWiseData(gEmployee.PageIndex, ViewState["SortExpression"] != null ? ViewState["SortExpression"].ToString() : ViewState["ClockNumber"].ToString(),  ViewState["SortOrder"] != null ? ViewState["SortOrder"].ToString() : "asc", gEmployee.PageSize, ref intTotalPages);

        }

        else

        {

            employee = objBALEmployee.GetPageWiseData(gEmployee.PageIndex, gEmployee.PageSize, ViewState["SortExpression"] != null ? ViewState["SortExpression"].ToString() : ViewState["ClockNumber"].ToString(),  ViewState["SortOrder"] != null ? ViewState["SortOrder"].ToString() : "asc", ref intTotalPages, dlEmployee.SelectedValue+" = '"+txtSearch.Text.Trim()+"'");

        }

    }

    var lstEmployee = employee.AsQueryable();

    if (intTotalPages > 0)

    {

        CustomPager.TotalPages =  intTotalPages %gEmployee.PageSize == 0 ? intTotalPages /gEmployee.PageSize : intTotalPages / gEmployee.PageSize + 1;

        CustomPager.Visible = true;

        lblNoRecordsFound.Visible = false;

        NoRecords.Visible = false;

    }

    else

    {

        CustomPager.Visible = false;

        lblNoRecordsFound.Visible = true;

        NoRecords.Visible = true;

    }

    ExportData1.DisableBtn(gEmployee);

    ExportData.ExportCheck = false;

    return lstEmployee;

}

上面的代码显示了我为网格中的selectMethod设置的bindGrid方法。

protected void btnGo_Click(object sender, EventArgs e)

{

    ViewState["IsEditSearch"] = "1";

    hiddenSearchField.Value = dlEmployee.SelectedValue;

    hiddenSearchValue.Value = txtSearch.Text.Trim();

    gEmployee.SelectMethod = "BindGrid";

}

上面的代码是为点击按钮编写的。

虽然我在点击代码上再次写了gEmployee.SelectMethod = "BindGrid";,但BindGrid 并没有被解雇。所以我无法将我新过滤的数据绑定到网格。

请指导我。

谢谢。

【问题讨论】:

    标签: asp.net .net asp.net-4.5


    【解决方案1】:

    我认为您需要在btnGo_Click 的末尾添加一行,明确调用网格上的 DataBind():

    protected void btnGo_Click(object sender, EventArgs e)
    {
        ViewState["IsEditSearch"] = "1";
        hiddenSearchField.Value = dlEmployee.SelectedValue;
        hiddenSearchValue.Value = txtSearch.Text.Trim();
        gEmployee.SelectMethod = "BindGrid";
    
        gEmployee.DataBind();
    }
    

    【讨论】:

    • 耶!有用 !非常感谢。但是还有一个问题,您能否在页面回发时给我一个线索,为什么它不会自动调用 Bind grid 方法,因为即使我没有 sequred gEmployee.SelectMethod = "BindGrid";也。这就是为什么我想知道为什么这次我需要明确要求它?但再次感谢! :)
    • 很高兴我能帮上忙。 :) 如果这回答了您原来的问题,您可以accept it as the answer。您的“为什么”问题是单独问题的一个很好的候选者:) ...但要尝试回答:我对需要明确的调用并不感到惊讶,但我惊讶于明确的在您的其他场景中不需要调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多