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

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

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

Re[2]: TabControl内のGridViewの行の選択処理


(過去ログ 87 を表示中)

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

■51690 / inTopicNo.1)  TabControl内のGridViewの行の選択処理
  
□投稿者/ ぽなこ (5回)-(2010/07/14(Wed) 10:42:26)

分類:[ASP.NET (VB)] 

お世話になります。
当方、VB2008/ASP.NET/VBでWEBアプリケーション構築をしています。

現在、TabControl・GridViewを使用したページを作っています。
TabControlの外ではJavaScriptを利用した行の選択処理を行えるのですが
TabControl内のGridViewでは選択処理が完全に反映されていない状態です。
やり方としては、コード内で選択リンクの行を非表示にし、aspx側のJavaScriptに
PostBack処理をさせています。選択したい行をどこでもいいのでクリックすれば
背景色が変わるようにしたつもりです。

Tabは5つあり、1つ1つに別々のGridViewが配置してあります。
PostBackは来ているようですが、背景色が変更されません。背景色はcssで指定しています。
ページの<head>内でリンクを貼ってcssファイルを読み込む感じです。
TabControl内ではJavaScriptでのcss利用(?)は使用できないのでしょうか。

他人が作っていたものを途中から引き継いでいるのでアレですが
コードを載せておきます。
/* JavaScript */
<script type="text/javascript" language="javascript">
function SelectedRow(rowNum, gridViewId)
{
__doPostBack(gridViewId, 'Select$' + rowNum);
}

</script>


/* GridViewイベント これがGridView分(5つ)あります */
Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
e.Row.Cells(0).Style.Add("display", "none")
If Not e.Row.RowType = DataControlRowType.DataRow Then
Exit Sub
End If

Dim clickEvent As String = String.Format("SelectedRow('{0}', '{1}')", e.Row.RowIndex, Me.GridView1.ClientID)

e.Row.Attributes.Add("onClick", clickEvent)
e.Row.Attributes.Add("onDblClick", clickEvent)

e.Row.Style.Add("cursor", "hand")

Me.Page.MaintainScrollPositionOnPostBack = True
End Sub


/* GridView (TabControl分(5つ)あります/cssを使用しています) */
<ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="タブ名"><HeaderTemplate>タブ名</HeaderTemplate>
<ContentTemplate>
<asp:Panel ID="Panel2" runat="server" Height="290px" Width="500px" ScrollBars="Auto">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="dgv">
<RowStyle CssClass="dgvrs" />
<AlternatingRowStyle CssClass="dgvars" />
<Columns>
<asp:CommandField ShowSelectButton="True" >
<ItemStyle Width="40px" /></asp:CommandField>
<asp:BoundField DataField="カラム名1" headertext="カラム名1" SortExpression="カラム名1">
<ItemStyle CssClass="dgvis" Wrap="False" Width="150px"/></asp:BoundField>
<asp:BoundField DataField="カラム名2" headertext="カラム名2" SortExpression="カラム名2">
<ItemStyle CssClass="dgvis" Wrap="False" Width="280px" /></asp:BoundField></Columns>
<HeaderStyle CssClass="dgvhs" Wrap="False" />
<SelectedRowStyle Wrap="False" CssClass="dgvsrs" />
</asp:GridView>
</asp:Panel></ContentTemplate></ajaxToolkit:TabPanel>

どうぞよろしくお願いします。
引用返信 編集キー/
■51693 / inTopicNo.2)  Re[1]: TabControl内のGridViewの行の選択処理
□投稿者/ もりお (243回)-(2010/07/14(Wed) 13:09:49)
No51690 (ぽなこ さん) に返信

> Dim clickEvent As String = String.Format("SelectedRow('{0}', '{1}')", e.Row.RowIndex, Me.GridView1.ClientID)

TablControl1$TabPanel1$GridView1
こんな感じの ID を指定する必要があるのではないでしょうか。
GridView.UniqueID プロパティを利用してみてはいかがでしょうか。

Dim clickEvent As String = _
    String.Format( _
        "SelectedRow('{0}', '{1}')", _
        e.Row.RowIndex, _
        Me.GridView1.UniqueID)

> /* GridViewイベント これがGridView分(5つ)あります */
> Private Sub GridView1_RowCreated( ...

1つのハンドラーに Handles 句で複数のイベントを関連付けるということもできます。

Private Sub GridView1_RowCreated( _
    ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles GridView1.RowCreated, GridView2.RowCreated
  Dim senderGridView As GridView = DirectCast(sender, GridView)
  ...

引用返信 編集キー/
■51757 / inTopicNo.3)  Re[2]: TabControl内のGridViewの行の選択処理
□投稿者/ ぽなこ (6回)-(2010/07/16(Fri) 16:31:23)

>>Dim clickEvent As String = String.Format("SelectedRow('{0}', '{1}')", e.Row.RowIndex, Me.GridView1.ClientID)
>
> TablControl1$TabPanel1$GridView1
> こんな感じの ID を指定する必要があるのではないでしょうか。
> GridView.UniqueID プロパティを利用してみてはいかがでしょうか。
>
> Dim clickEvent As String = _
> String.Format( _
> "SelectedRow('{0}', '{1}')", _
> e.Row.RowIndex, _
> Me.GridView1.UniqueID)
>
>>/* GridViewイベント これがGridView分(5つ)あります */
>>Private Sub GridView1_RowCreated( ...
>
> 1つのハンドラーに Handles 句で複数のイベントを関連付けるということもできます。
>
> Private Sub GridView1_RowCreated( _
> ByVal sender As Object, _
> ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
> Handles GridView1.RowCreated, GridView2.RowCreated
> Dim senderGridView As GridView = DirectCast(sender, GridView)
> ...
>

お返事遅くなってしまい、申し訳ございません;
無事に実装できました!あろがとうございました★!

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -