- ベストアンサー
Dim BMB As BindingManagerBase 定義エラー
VB.NET2003Standardを使用しています。 MySQLと接続してDataGridに表示させていますが DataGrid上の選択された行の位置を調べたいのですが Dim bmb As BindingManagerBase = DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember) Dim dr As DataRow = CType(bmb.Current, DataRowView).Row とするとBindingManagerBaseが定義されていませんになってしまいます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
お世話になります。 いつ、どのタイミングで選択された行の情報を取得したいのかが わかりませんが、 ButtonField の Button を押下された時と仮定すると、 こういう感じで何が選択されたのか取得することができます。 ■ASPX <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="vs2003_WebApplication1.WebForm1"%> <HTML> <HEAD> <title>WebForm1</title> </HEAD> <body> <form id="Form1" method="post" runat="server"> <asp:DataGrid id="DataGrid1" runat="server"> <Columns> <asp:ButtonColumn Text="選択" ButtonType="PushButton" CommandName="Select"></asp:ButtonColumn> </Columns> </asp:DataGrid> <br> <asp:Label id="Label1" runat="server">Label</asp:Label> </form> </body> </HTML> ■コードビハインド Public Class WebForm1 Inherits System.Web.UI.Page #Region " Web フォーム デザイナで生成されたコード " ' 省略 #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Me.IsPostBack Then Dim data As DataTable = New DataTable("TestTable") ' DataTable 生成処理 With data .Columns.Add("Field1", GetType(String)) .Columns.Add("Field2", GetType(String)) .Columns.Add("Field3", GetType(String)) .Rows.Add(New String() {"a", "b", "c"}) .Rows.Add(New String() {"aa", "bb", "cc"}) .Rows.Add(New String() {"aaa", "bbb", "ccc"}) End With ' Bind Me.DataGrid1.DataSource = data Me.DataGrid1.DataBind() End If End Sub Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand If e.CommandName = "Select" Then Dim field1Cell As TableCell = e.Item.Cells(1) Dim field2Cell As TableCell = e.Item.Cells(2) Dim field3Cell As TableCell = e.Item.Cells(3) Me.Label1.Text = "Field1:" & field1Cell.Text & "<br>" & _ "Field2:" & field2Cell.Text & "<br>" & _ "Field3:" & field3Cell.Text End If End Sub End Class
お礼
数日かけて原因を調べていました。 よくよくみてみると If Not Me.IsPostBack Then が欠落しておりWEBを参照する度に 更新されていたということでした。 つまりPOSTが有れば更新してはいけない 訳でした。他にASP.NETで相談する相手が いないので大変助かりました。
補足
回答どうもです。 1.HTMLに追加 <Columns><asp:ButtonColumn Text="選択"ButtonType="PushButton" CommandName="Select"></asp:ButtonColumn></Columns> 2.以下以降を追加 Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand 3.Label1コントロールを追加。 4.データはMySQLクライアントとDataSet1を利用して DataGrid1に表示する。 結果としてLabel1.textに表示されませんでした。 理解できたこと <Columns>タグの利用の方法。 以上です。