0

ASP.Net 4.5 を使用しており、「Select メソッド」を使用したグリッド ビューのデータ バインディングに関する問題に直面しています。

グリッドは、カスタム ページングでもデータをバインドできます。

問題は、データのフィルタリングにあります。asp ボタンがあります。これをクリックすると、ストアド プロシージャを使用してフィルター処理されたデータを取得できます。しかし、今回のグリッドは、SelectMethod のそのグリッドの aspx ページで言及したメソッドを呼び出すことができません。

<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;

}

上記のコードは、bindGridグリッドの selectMethod に設定したメソッドを示しています。

protected void btnGo_Click(オブジェクト送信者, EventArgs e)

{

    ViewState["IsEditSearch"] = "1";

    hiddenSearchField.Value = dlEmployee.SelectedValue;

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

    gEmployee.SelectMethod = "BindGrid";

}

上記のコードはボタンクリック用に書かれています。

gEmployee.SelectMethod = "BindGrid";クリックコードについてもう一度書きましたBindGridが、解雇されていません。そのため、新しくフィルター処理されたデータをグリッドにバインドできません。

これについて私を案内してください。

ありがとう。

4

1 に答える 1

2

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();
}
于 2013-03-25T07:08:04.420 に答える