0

Label を使用して GridView で作成しました。StatusCode を取得するためのストア プロシージャを作成しました

SELECT StatusCode
From TableName

GridView のこの行

< asp:Label ID="lblStatusCode" runat="server" Visible="false"

Text='<%#DataBinder.Eval(Container.DataItem, "StatusCode")%>' />

.cs ファイルのこれらの行

Label lblStatusCode = (Label)row.FindControl("lblStatusCode");
objJV.Status = Convert.ToInt32(lblStatusCode.Text);

しかし、テーブルに値があってもNULLlblStatusCode.Textが表示されています。

ストアドプロシージャを個別に実行すると、値が与えられます。

// バインド関数

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

        if (!IsPostBack)
        {
            BindJVJobValidationDetails();

        }


    }

保護されたボイドBindJVJobValidationDetails() {

        JVSummary objJV = new JVSummary();

        DataSet dataJobValidation = new DataSet();

        if (SessionVariables.PERID != null)
        {

            dataJobValidation = objJV.GetjvTransaction(SessionVariables.PERID);

            gvEmployee.DataSource = dataJobValidation;
            gvEmployee.DataBind();

        }

    }

何が問題なのだろうか...?

4

2 に答える 2

0

テキストは、分離コードの実行後にページ上のコントロールに適用されます。コードビハインドでテキストを設定できませんか?

編集:ページ上のラベルの値、つまり aspx / ascx を使用してContainer.DataItem設定していますが、この値はコードビハインドの実行後に設定されます。基本的に、コード ビハインドがコントロールを見るとき、そのテキスト プロパティはまだ設定されていません。代わりに、DataRowBinding イベントを GridView に追加し、コード ビハインドのイベントに lblStatusCode.Text を設定します。

于 2012-12-06T11:28:13.987 に答える
0

gridviewのイベント でこのコードを試してくださいOnRowDataBound="GridView_RowDataBound"

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if ((e.Row.DataItem) != null)
        {
            Label lblStatusCode = (Label)e.row.FindControl("lblStatusCode");
            objJV.Status = Convert.ToInt32(lblStatusCode.Text);
        }
    }
}
于 2012-12-06T11:47:01.837 に答える