C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: GridViewの列幅の設定とTextBox化


(過去ログ 17 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■6256 / inTopicNo.1)  GridViewの列幅の設定とTextBox化
  
□投稿者/ ワイフラ (1回)-(2007/08/07(Tue) 09:27:02)

分類:[ASP.NET (VB)] 

ASP.NETで言語はVBを使って開発をしているんですが
ある画面でPage_Load時に作ったWebサービスでSQL Sarverよりデータを
取ってきて下記のような感じでデータをGridViewにバインドしているんですが、
バインドしたGridViewの列幅を変更したいんですがColumnsのカウント等を見ても
何も入っていませんし自分が考えられる限りやっては見たんですが
一向にできませんでした。

---------------------------------------------------------
Dim DataSet1 As New localhost.Service

GridView1.DataSource = DataSet1.GetOrderData()
GridView1.DataMember = "Order_Data"
GridView1.DataBind()
---------------------------------------------------------

その他にも、例えばバインドしたデータが7列あるとして、
その3列目をTextboxにして変更したりしたいんですが
やはりどうやっていいのかわかりません。

上記のやりかたを教えて頂けたらありがたいです。
よろしくお願いします。

引用返信 編集キー/
■6282 / inTopicNo.2)  Re[1]: GridViewの列幅の設定とTextBox化
□投稿者/ いしだ (20回)-(2007/08/07(Tue) 15:06:47)
いしだ さんの Web サイト
こんにちは

DataSet1.GetOrderData()はちゃんとDataSetを取ってきているのでしょうか?
GridView1.DataSource = DataSet1.GetOrderData()
の後に、
Dim a1 As Integer = CType(GridView1.DataSource, DataSet).Tables("Order_Data").Columns.Count
Dim a2 As Integer = CType(GridView1.DataSource, DataSet).Tables(0).Columns.Count
を記述してa1,a2の値を確認してみるとどうでしょうか?
(ブレークポイントを置いて見てもかまいません)

また、GridView1のAutoGenerateColumnsプロパティがFalseになっていたりしないでしょうか?

引用返信 編集キー/
■6295 / inTopicNo.3)  Re[2]: GridViewの列幅の設定とTextBox化
□投稿者/ ワイフラ (2回)-(2007/08/07(Tue) 16:35:12)
いしださん>

ご回答ありがとうございます。

DataSetはちゃんと取れています。
ですのでGridViewにはSQL Sarverの結果がちゃんと帰ってきます。

それで下記のコードを置いてみました。

GridViewには左にTemplateFieldが2つあって
DataSourceに読み込むDataSet1の数は5つです。

それで、
a1は5a2は1となりました。

AutoGenerateColumnsはTrueです。

よろしくお願いします。

引用返信 編集キー/
■6302 / inTopicNo.4)  Re[3]: GridViewの列幅の設定とTextBox化
□投稿者/ いしだ (22回)-(2007/08/07(Tue) 17:08:23)
いしだ さんの Web サイト
2007/08/07(Tue) 17:09:45 編集(投稿者)
列サイズを変更したいという事でしたら、以下のようにやってみてはどうでしょう?
これが正当な方法かどうかわかりませんが。。。(誰かがフォローしてくれるはず。。。)

Protected Sub GridView1_DataBound(sender As Object, e As EventArgs)
   Dim tc As TableCell
   For Each tc In  GridView1.HeaderRow.Cells
      tc.Width = 100
   Next tc
End Sub 'GridView1_DataBound

引用返信 編集キー/
■6303 / inTopicNo.5)  Re[3]: GridViewの列幅の設定とTextBox化
□投稿者/ ワイフラ (3回)-(2007/08/07(Tue) 17:08:31)
ちなみに、

Dim a3 As Integer = GridItem.Columns.Count

を入れてやると2が返ってきます。
これは自分としてはTemplateFieldのみのColumns.Countを
取ってきてるだけだと思ってます。

それでDataBind後にはさらに5列表示されているので
その部分を操作したいと思ってます。
引用返信 編集キー/
■6305 / inTopicNo.6)  Re[4]: GridViewの列幅の設定とTextBox化
□投稿者/ いしだ (23回)-(2007/08/07(Tue) 17:12:39)
いしだ さんの Web サイト
となると、こんな感じでしょうか。

Protected Sub GridView1_DataBound(sender As Object, e As EventArgs)
   GridView1.HeaderRow.Cells(2).Width = 100
   GridView1.HeaderRow.Cells(3).Width = 110
   GridView1.HeaderRow.Cells(4).Width = 120
   GridView1.HeaderRow.Cells(5).Width = 130
   GridView1.HeaderRow.Cells(6).Width = 140
End Sub 'GridView1_DataBound

引用返信 編集キー/
■6307 / inTopicNo.7)  Re[5]: GridViewの列幅の設定とTextBox化
□投稿者/ ワイフラ (5回)-(2007/08/07(Tue) 17:21:05)
いしださん>

出来ました!!
ありがとうございます。

それと、もしよろしかったらGridView内のCellをTextboxのようにして
値の操作が可能にするようにする方法はわかりますでしょうか?

ご教授いただけたら幸いです。
よろしくお願いします。
引用返信 編集キー/
■6308 / inTopicNo.8)  Re[6]: GridViewの列幅の設定とTextBox化
□投稿者/ いしだ (24回)-(2007/08/07(Tue) 17:37:44)
いしだ さんの Web サイト
2007/08/07(Tue) 18:47:18 編集(投稿者)
2007/08/07(Tue) 17:38:30 編集(投稿者)

こんな感じでいくんじゃないでしょうか?

Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs)
   If e.Row.RowIndex = 1 Then
      Dim tb1 As New TextBox()
      tb1.ID = "tb1ID" ' 任意のIDを付けとくとあとで取得できる
      tb1.Text = e.Row.Cells(2).Text
      e.Row.Cells(2).Controls.Add(tb1)
   End If
End Sub 'GridView1_RowDataBound

引用返信 編集キー/
■6315 / inTopicNo.9)  Re[7]: GridViewの列幅の設定とTextBox化
□投稿者/ いしだ (25回)-(2007/08/07(Tue) 18:19:12)
いしだ さんの Web サイト
2007/08/07(Tue) 18:27:07 編集(投稿者)
Webサービスで取得する列が決まっているなら、aspxの方に最初から書いておいてはどうですか?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    ・・・・
    <asp:TemplateField HeaderText="列3">
        <ItemTemplate>
            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("col3") %>'></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="col4" HeaderText="列4" />
    <asp:BoundField DataField="col5" HeaderText="列5" />
    <asp:BoundField DataField="col6" HeaderText="列6" />
    <asp:BoundField DataField="col7" HeaderText="列7" />
</asp:GridView>

このようにしておけば、ここでWidthも指定できますし。

引用返信 編集キー/
■6341 / inTopicNo.10)  Re[8]: GridViewの列幅の設定とTextBox化
□投稿者/ ワイフラ (6回)-(2007/08/08(Wed) 09:41:12)
いしださん>

おはようございます。

ご指導いただいた方法で無事に出来ました!

この度は本当にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -