- PR -

GridViewを最初から編集できるようにしたい

1
投稿者投稿内容
ぶんさん
会議室デビュー日: 2004/07/27
投稿数: 11
投稿日時: 2006-02-24 13:09
お世話になっております。
早速ですが、表題の件で何方かご教授願えないでしょうか。

VS2005を使用してWebのGridViewをカスタマイズしているのですが、考えていることが実現できません。
やりたいことは以下の内容です。
1.GridViewにTextBoxを表示させて、バインドしたDataTableの内容を編集したい。
2.同じくCheckBoxを表示させて、バインドしたDataTableの内容(true,false)を変更したい。

分かる範囲で以下のコードを書いてみました。

以下、GridViewの定義です。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging">
 <Columns>
  <asp:BoundField DataField="code" />
  <asp:BoundField DataField="name" />
  <asp:TemplateField>
   <ItemTemplate>
    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("note") %>' OnTextChanged="TextBox1_TextChanged" AutoPostBack="True"></asp:TextBox>
   </ItemTemplate>
  </asp:TemplateField>
  <asp:CheckBoxField DataField="flag" />
 </Columns>
</asp:GridView>

以下、GridViewにDataTableをバインドしています。
// GridViewに表示する為のデータテーブルを作成します。
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("number", typeof(int)));
dt.Columns.Add(new DataColumn("code", typeof(string)));
dt.Columns.Add(new DataColumn("name", typeof(string)));
dt.Columns.Add(new DataColumn("note", typeof(string)));
dt.Columns.Add(new DataColumn("flag", typeof(bool)));
dt.Rows.Add(new object[] { 1, "7000001", "名称あ2行目3行目", "あああああああああ", true });
dt.Rows.Add(new object[] { 2, "7000002", "名称い2行目3行目", "", false });
dt.Rows.Add(new object[] { 3, "7000003", "名称う2行目3行目", "いいいいいいいいい", true });
dt.Rows.Add(new object[] { 4, "7000004", "名称え2行目3行目", "ううううううううう", false });
dt.Rows.Add(new object[] { 5, "7000005", "名称お2行目3行目", "えええええええええ", true });
dt.Rows.Add(new object[] { 6, "7000006", "名称か2行目3行目", "おおおおおおおおお", false });
dt.Rows.Add(new object[] { 7, "7000007", "名称き2行目3行目", "かかかかかかかかか", true });
dt.Rows.Add(new object[] { 8, "7000008", "名称く2行目3行目", "ききききききききき", false });
dt.Rows.Add(new object[] { 9, "7000009", "名称け2行目3行目", "くくくくくくくくく", true });
dt.Rows.Add(new object[] { 10, "7000010", "名称こ2行目3行目", "けけけけけけけけけ", false });

// GridViewのデータソースを指定します。
this.GridView1.DataSource = dt;
this.GridView1.DataBind();

ここまで書いてみて、どうしても出来ないのが、
1.ItemTemplateに置いてあるTextBox1の内容を取得できず、バインドしたDataTableに反映できない。
2.CheckBoxFieldを追加して、チェックボックスは表示できたのですが、その編集が出来ず、当然DataTableに反映も出来ない。
ということです。

どなたか、よろしくお願いします。
masakazu
会議室デビュー日: 2006/02/16
投稿数: 9
投稿日時: 2006-02-26 03:45
DataGridと同様に
コード:
Request.Params[gridViewRow.FindControl("TextBox1").UniqueID];


という形式で入力値が取れました。
動作確認に使用したコードを置いておきますので、参考にしてみてください。
http://www.spoon.mydns.jp/net/test/GridViewInline/code.html
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2006-02-26 08:23
こちらにライブデモ用のサンプルを用意しましたので参考にしてください。
http://aspspider.net/AkioKasai/Goto.aspx?id=060226-1

VB.NET ⇒ C#.NETへの変換は↓から行ってください。
http://carlosag.net/Tools/CodeTranslator/Default.aspx
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
ぶんさん
会議室デビュー日: 2004/07/27
投稿数: 11
投稿日時: 2006-02-27 09:00
masakazu様、Access様、回答ありがとうございます。
お陰様で目的のコードを書くことが出来ました。
お二人のサンプルコードは大変参考になりました。
本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)