初めてDataGrid触りました。列幅0pxにしてもボタン幅0pxにしてもばっちり出ちゃうんですねー。
ということで、一工夫してみました。以下、サンプルです。
ただし、ちょっと細い線が残ります。。。
---Html部分-------------------------------------------------------------------------------------------------
<asp:DataGrid ID="datagrid1" runat="server" AutoGenerateColumns="False" CellPadding="0" ShowHeader="False" >
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<div id="div1" runat="server" style="overflow:hidden;">
<asp:Button id="TextBox1" runat="server" Width="45px" Text='<%# bind("hoge")%>'>
</asp:Button>
</div>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<div id="div2" runat="server" style="overflow:hidden;">
<asp:Button id="TextBox2" runat="server" Width="45px" Text='<%# bind("huga")%>'>
</asp:Button>
</div>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Button ID="Button2" runat="server" Text="Button" />
---サーバー側-------------------------------------------------------------------------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim dt As New Data.DataTable
dt.Columns.Add("hoge")
dt.Columns.Add("huga")
dt.Rows.Add("hoge1", "huga1")
dt.Rows.Add("hoge2", "huga2")
datagrid1.DataSource = dt
datagrid1.DataBind()
End Sub
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim div As HtmlControl
For i As Integer = 0 To Me.datagrid1.Items.Count - 1
div = Me.datagrid1.Items(i).FindControl("div1")
div.Style.Item("width") = "0px"
div = Me.datagrid1.Items(i).FindControl("div2")
div.Style.Item("width") = "45px"
Next
End Sub
Protected Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim div As HtmlControl
For i As Integer = 0 To Me.datagrid1.Items.Count - 1
div = Me.datagrid1.Items(i).FindControl("div1")
div.Style.Item("width") = "45px"
div = Me.datagrid1.Items(i).FindControl("div2")
div.Style.Item("width") = "0px"
Next
End Sub
// HiddenFieldなんて便利そうなものがあるんですね!折角作ってみたので投稿しちゃったけど、
そっちのほうがいいかも。。
お礼
そういえば、列にこだわりすぎていましたね。 HIDDEN項目でやってみます。 回答ありがとうございました。