2012-04-17 9 views
0

私はvb.netで新しいです。私はこれを実装する方法をいくつかの質問があります。私はグリッドビューを持っており、列の状態に応じてボタンが変化します。ステータスは「ブロックされています」ボタンは「ブロック解除」され、ステータスが空白の場合、ブロック"。 私の他の問題は、ボタンをクリックした後、選択された行ボタンがデータベース内で更新され、ユーザーが「ブロック」をクリックした場合に状態をブロックに変更し、再びボタンが「ブロック解除」ボタンに変わります。あなたのお手伝いをさせていただきます。vb.netを使ってgridview内のボタンのテキストを変更する

ステータス|ブロック解除/ブロック

(空白)|ブロック(ボタン)

ブロックされた|ブロック(ブロック解除ボタンにする必要があります)

このコードには何の問題がありますか?なぜ機能していませんか?

<asp:BoundField DataField="AllowStatus" 
     HeaderText="" ReadOnly="True" 
     SortExpression="AllowStatus"> 
     <ItemStyle Width="300px" /> 
    </asp:BoundField> 
    <asp:TemplateField HeaderText="Block/Unblock"> 
      <ItemTemplate> 
       <asp:Button ID="BlockButton" runat="server" CausesValidation="false" CommandName="" Text="Block" /> 
      </ItemTemplate> 
    </asp:TemplateField> 




Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) ' Handles GridView1.RowDataBound **<<ooops my mistake I comment out this >.< ..that's why it's not working** 
     If e.Row.RowType = DataControlRowType.DataRow Then 
      Dim allowstatus As String = (DataBinder.Eval(e.Row.DataItem, "AllowStatus")).ToString 
      Dim btn As Button = DirectCast(e.Row.FindControl("BlockButton"), Button) 
      If allowstatus = "Blocked" Then 
       btn.Text = "Unblocked" 
      End If 
     End If 
End Sub 

答えて

0

handle GridView1_RowDataBoundイベント。列の値に基づいて(ブロック/ EmptyString)、FindControlを使用してボタンを探し、そのテキストをブロック/ブロック解除するように変更します。

+0

ページを読み込む際にテキストボタンを変更するにはどうすればよいですか? – naru

+0

データをグリッドにバインドすると、データがUIコントロールにバインドされた後、RowDataBoundイベントが各行に対して発生します。この時点では、列ステータス(ブロックされた/ EmptyString)がわかります。あなたはそれに基づいてボタンのラベルを決定することができます – rt2800

+0

ああ私が参照してください..それはRowDataBoundの機能です..それについて...ありがとうございます。申し訳ありませんが、私はどのようにステータス(ブロック/ EmptyString)? vb.net?..Thanksの構文 – naru