10/02/02 19:23:36
>>780
Repeaterに
<asp:TextBox ID="tbEditName" Columns="80" Text='<%# this.GetColumnData(Container, "Name")%>' runat="server" style="ime-mode: active;" OnFocus="this.select();" ></asp:TextBox>
<asp:Button ID="DeleteButton" runat="server" Text="削除" CommandArgument='<%# this.GetColumnData(Container, "ID") %>' CommandName="Delete" OnClientClick="return confirm('削除しますか?');" />
<asp:Button ID="EditButton" runat="server" Text="編集" CommandArgument='<%# this.GetColumnData(Container, "ID") %>' CommandName="Edit" />
みたいにTextBoxとButtonを設置して、CommandArgumentに設定されたIDから、データベースのIDを取得できる
ID取得したらRepeater内にあるコントロールをナメて、同じIDを持つ行を取得して、
その行にあるTextBoxから入力内容を取得して更新すればいい。
for (int i = 0; i < this.rptTikuMaster.Items.Count; i++)
{
RepeaterItem ri1 = this.repeater.Items[i];
TextBox tbEditName = (TextBox)ri1.FindControl("tbEditName");
int editedID = int.Parse(lblEditID.Text);
if (editedID == ID)
{
//IDが一致したらデータを取得してSQLを更新する
break;
}
}
これはRepeater内にTextBoxを設置したパターンだけど、
別途Repeaterの外部にTextBoxを設置しておいて、
そこにRepeaterの編集ボタンを押した行のデータを表示させて、
編集さぜて保存するという方法もある。