- PR -

GridViewテンプレートボタン押下時の例外について

1
投稿者投稿内容
Tanishi
会議室デビュー日: 2006/03/11
投稿数: 9
投稿日時: 2006-08-22 00:02
お世話になります。
GridViewコントロールにて、テンプレート列にボタンコントロールを加え、CommandName を Select に設定し、イベントを補足しようとしたところ、
「無効なポストバックまたはコールバック引数です」
という例外が投げられてしまいます。
どうやらクライアント側でイベントの検証でひっかかっているみたいなのですが、RegisterForEventValidationで、生成されたボタン一個一個を登録しても駄目でした。この例外の対処方法がどうしてもわからないので、どなたかご教授お願いします。
以下に主要箇所のソースコードを乗せます。

aspx側
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowCommand="GridView1_RowCommand">

<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="false" CommandName="Select" Text="選択" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="テキスト">
<ItemTemplate>
<asp:TextBox ID="txt" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"MENUTEXT") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

cs側

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
Label1.Text= e.CommandArgument.ToString();
ClientScript.RegisterClientScriptBlock(typeof(string), "script",
GetScript(Convert.ToInt32(Label1.Text)));
}

private string GetScript(int index)
{
const string script
= "<script type='text/javascript'> \n" +
" alert(' Select Index = {0} : Menu Text = {1}'); \n" +
"</script> ";
TextBox tx = GridView1.Rows[index].FindControl("txt") as TextBox;
return String.Format(script, index.ToString(),tx.Text);
}
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-22 02:57
引用:
GridViewコントロールにて、テンプレート列にボタンコントロールを加え、CommandName を Select に設定し、イベントを補足しようとしたところ、

これだけではそのエラーにはならないと思いますけど。
というか提示されたコードでやってみたけど起きませんでした。

とりあえずWeb.Configか@PageディレクティブでEnableEventValidationを無効にしてみては?
1

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