2

データベースからクエリされたテーブルを表示するためにグリッドビューを使用しています...

このグリッドビューでは、ボタンフィールドと 3 つのテンプレート フィールドも追加しました...

ボタンフィールドを押すとデータベースからのデータは取得されるのですが、テンプレートフィールドから挿入された手動データは取得されません.null値が取得されるようです。

xml ファイルから、次のイベントを発生させています。

OnRowCommand="GridView1_SelectedIndexChanged1"

そのイベントをキャッチする次のメソッドがあります。

protected void GridView1_SelectedIndexChanged1(object sender, GridViewCommandEventArgs e)
        {
            int x = Convert.ToInt32(e.CommandArgument);
            GridView1.SelectRow(x);

            GridViewRow row = GridView1.Rows[x];

            Response.Write(row.Cells[0].Text + "\t");
            Response.Write(row.Cells[1].Text + "\t");
            Response.Write(row.Cells[2].Text + "\t");
            Response.Write(row.Cells[3].Text + "\t");
            Response.Write(row.Cells[4].Text + "\t");
            Response.Write(row.Cells[5].Text + "\t");
            Response.Write(row.Cells[6].Text + "\t");
            Response.Write(row.Cells[7].Text + "\t");
            Response.Write(row.Cells[8].Text + "\t");  
           }

そのテンプレート フィールドから値を取得する方法についてのアイデアはありますか? GridViewCommandEventArgs ではなく別のイベントをキャッチする必要がありますか? もしそうなら、xml 部分からどのイベントをスローする必要がありますか?

ありがとう、

4

2 に答える 2

0

私は同じように戦っています.Cells []コードをasp BoundFieldで使用していました。フッターにボタンなどが必要なため、テンプレートフィールドに切り替える必要がありました。アシュリーが提案したのと同じコードを使用すると、 System.NullReferenceException: Object reference not set to an instance of an object が発生します。

行コマンドイベント内でこれを行っています。3日からこんな感じです:(

編集: 私の問題の簡単な解決策: フッターに Field を指定して ID を作成しましたが、ItemTemplate に ID を指定していませんでした。つまり、そこにあったのは <%# Eval("Description")% だけでした> コード ビハインドで何らかの ID を指定せずにこのデータを選択する方法はないようです。私は愚かで、この単純な事実に後で気がつきませんでした。

于 2013-01-30T19:11:06.877 に答える
0

行に追加されたコントロール u を見つけ、テキスト プロパティを使用してその値を取得できます。row.FindControl(<urIdgoeshere>)\\cast it to textBox.Text に似たものを使用して、その値を取得します。

GridViewRow row = GridView1.Rows[x];

Response.Write((TextBox)row.FindControl('txtbox1')).Text;

于 2011-07-26T07:50:13.580 に答える