2009-04-04 1 views
2

私は、SQL Expressデータベースからデータを取り出すGridViewを使用してフォームを作成しています。最後の列は、その列にどのデータがバインドされているかに基づいて変更できるようにするボタンです。GridViewにバインドされたデータに応じてASPボタンのプロパティを変更しますか?

このボタンは、「有効/無効」トグルとして機能します。基本的には、ユーザーが有効になっている場合、ボタンに「無効」と言って、OnClientClickプロパティが無効な機能を指しているようにします。ユーザーが無効になっている場合、ボタンに「有効」と表示し、有効化機能をポイントします。

私のgoogle-fuは、今日は弱いです。皆さんが少しでも助けてくれることを願っています。前もって感謝します。

+0

あなたはあなたの答えを任意の編集を持っていませんあなたが答えを得るとき。受け入れられたように回答をマークするだけであなたがする必要があります。 – Samuel

答えて

2

は、私はあなたの有効/無効は、テキストがグリッドをバインドするために使われているデータセット内の「有効/無効」を持つDB

<asp:TemplateField> 
    <ItemTemplate> 
    <asp:Button runat="server" ID="btn" Text='<%# "1".Equals(Eval("Enabled").ToString()) ? "Enabled" : "Disabled" %>' OnClick='<%# "1".Equals(Eval("Enabled").ToString()) ? "DISABLE_METHOD" : "ENABLE_METHOD" %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

この状況では、依然としてユーザーのIDをコマンド引数に指定する必要があります。処理後にグリッド全体を再バインドします。 –

1

開始点としてOnRowDataboundイベント(.net 2.0以降を想定)を使用します。行の行データにアクセスし、必要に応じてボタンを変更することができます。私はあなたのために具体的な事例を掘り起こすことができるかどうかを見ていきます。

2

のビット値であると仮定し、これを試してみてください。

次に、テンプレート列を利用し、としてこれボタンを定義します。

<asp:button text='<%# Eval("IsEnabled") %>' runat=server commandname='<%# Eval("IsEnabled") %>' commandargument ='<%# Eval("UserId") %>' id="myButton" /> 

を次に、グリッドのRowCommandイベントには、次の操作を行います

dim btn as button = e.item.findcontrol("myButton") 
select case e.Command 
    case "Enable" 
    myDisableFunction(e.commandargument) 
    btn.Text = 'Disable' 
    btn.Cmmand = 'Disable' 
    case "Disable" 
    myEnableFunction(e.commandArgument) 
    btn.Text = "Enable" 
    btn.Commandname="Enable" 
end case 
+0

+ 1-私はIsEnabledがDBのビットであると考えているので、CommandNameロジックをやり直したいかもしれません –

+0

@rm - この特定の理由でデータセットからTEXTを返すように指定しました。ビットを文字列に変更するには、SQLを使用してSQLで行うことができます。CASE When IsEnabled = 1 THEN 'Disable' ELSE 'Enable' END AS IsEnabled。 これはコード内のIF文よりも高速です。 –