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

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

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

Re[5]: GridView・ユーザIDで絞り込む


(過去ログ 18 を表示中)

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

■7275 / inTopicNo.1)  GridView・ユーザIDで絞り込む
  
□投稿者/ 初心者x (5回)-(2007/09/03(Mon) 12:44:34)

分類:[ASP.NET (VB)] 

お世話になっております。

実現したいこと・・・
LoginコントロールとGridViewコントロールを使って、
ログイン後、ユーザIDに合致したレコードだけを表示させる。


自動で書きこまれたコードによって表示・編集・削除は出来ますが、
さらにユーザIDで絞り込む方法が分かりません。

SqlDataSourceコントロールのSelectCommandにて、
Session変数にしたユーザIDを使用することは可能でしょうか?

また、別に良い方法があればご指摘ください。



引用返信 編集キー/
■7279 / inTopicNo.2)  Re[1]: GridView・ユーザIDで絞り込む
□投稿者/ Mr.T (85回)-(2007/09/03(Mon) 13:31:45)
Mr.Tです、こんにちは、


■No7275 (初心者x さん) に返信
> お世話になっております。
> 
> 実現したいこと・・・
> LoginコントロールとGridViewコントロールを使って、
> ログイン後、ユーザIDに合致したレコードだけを表示させる。
> 
> 
> 自動で書きこまれたコードによって表示・編集・削除は出来ますが、
> さらにユーザIDで絞り込む方法が分かりません。
> 
> SqlDataSourceコントロールのSelectCommandにて、
> Session変数にしたユーザIDを使用することは可能でしょうか?

<asp:SqlDataSource ID="SqlDataSource1"
 runat="server" ConnectionString="hogehoge"
 SelectCommand="SELECT [UserCD], [UserName] FROM [M_User] where UserCD=@UserCD">
 <SelectParameters>
 <asp:SessionParameter Name="UserCD" SessionField="UserCD" />
 </SelectParameters>
</asp:SqlDataSource>
 
みたいにすればSession利用もいけますが。

http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.sessionparameter(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/z72eefad(VS.80).aspx
は必ず確認してください。

引用返信 編集キー/
■7325 / inTopicNo.3)  Re[2]: GridView・ユーザIDで絞り込む
□投稿者/ 初心者x (6回)-(2007/09/03(Mon) 22:09:57)
2007/09/03(Mon) 22:31:54 編集(投稿者)

No7279 (Mr.T さん) に返信

> <asp:SqlDataSource ID="SqlDataSource1"
>  runat="server" ConnectionString="hogehoge"
>  SelectCommand="SELECT [UserCD], [UserName] FROM [M_User] where UserCD=@UserCD">
>  <SelectParameters>
>  <asp:SessionParameter Name="UserCD" SessionField="UserCD" />
>  </SelectParameters>
> </asp:SqlDataSource>
>
> みたいにすればSession利用もいけますが。
>


Mr.T 様

SessionParametersを教えていただき、ありがとうございました。
アドバイスとURLを元に、以下のようなカタチにしてみました。


Protected Sub login1_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs)
Session("username") = login1.UserName
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim user As MembershipUser
user = Membership.GetUser()
Dim userGUID = user.ProviderUserKey
SqlDataSource1.SelectParameters("username").DefaultValue = userGUID.ToString()
End Sub

<asp:SqlDataSource ID="SqlDataSource1" …
SelectCommand="SELECT A.UserID, A.ファイル名, A.コメント, A.日時, B.UserName
FROM ファイル管理 AS A INNER JOIN aspnet_Users AS B ON A.UserId = B.UserId WHERE A.UserID = @username" />

<SelectParameters>
<asp:SessionParameter Name="username" DefaultValue = userGUID.ToString() />
</SelectParameters>


これだとログインIDによる絞込みが出来るようになりました。

ただ、出来るはずの編集が出来なくなってしまいました。(削除は出来ます)

もしかしたら不要なものを追加してしまったのかもしれませんが、、、


引用返信 編集キー/
■7331 / inTopicNo.4)  Re[3]: GridView・ユーザIDで絞り込む
□投稿者/ Mr.T (88回)-(2007/09/04(Tue) 00:03:05)
Mr.Tです、こんにちは。

> <asp:SqlDataSource ID="SqlDataSource1" …
> SelectCommand="SELECT A.UserID, A.ファイル名, A.コメント, A.日時, B.UserName
> FROM ファイル管理 AS A INNER JOIN aspnet_Users AS B ON A.UserId = B.UserId WHERE A.UserID = @username" />

そりゃ、そのSQL、更新可能じゃないからですね。単一のテーブルじゃないなら、
UpdateCommandを使う必要があるんじゃないですか?



引用返信 編集キー/
■7343 / inTopicNo.5)  Re[4]: GridView・ユーザIDで絞り込む
□投稿者/ 初心者x (7回)-(2007/09/04(Tue) 11:10:31)
2007/09/04(Tue) 11:12:45 編集(投稿者)
No7331 (Mr.T さん) に返信
> Mr.Tです、こんにちは。
> 
>><asp:SqlDataSource ID="SqlDataSource1" …   
>>SelectCommand="SELECT A.UserID, A.ファイル名, A.コメント, A.日時, B.UserName 
>>FROM ファイル管理 AS A INNER JOIN aspnet_Users AS B ON A.UserId = B.UserId WHERE A.UserID = @username" />
> 
> そりゃ、そのSQL、更新可能じゃないからですね。単一のテーブルじゃないなら、
> UpdateCommandを使う必要があるんじゃないですか?


Mr.T 様


度々失礼いたします。

UpdateCommandの部分は

UpdateCommand="UPDATE [ファイル管理] SET 更新したい列 = @更新したい列
               WHERE [主キー] = @主キー" EnableViewState="False"

のままでしたが、これだけでは不十分ということでしょうか
単一テーブルか否かと、絞り込みの処理をした結果が
どのように関わってくるかイマイチ理解できていないようです

[ 構文エラー。文字列から uniqueidentifier 型に変換できませんでした。]
というエラーメッセージが出てしまいます。

引用返信 編集キー/
■7368 / inTopicNo.6)  Re[5]: GridView・ユーザIDで絞り込む
□投稿者/ 初心者x (8回)-(2007/09/04(Tue) 17:01:13)
<asp:SessionParameter Name="username" DefaultValue = userGUID.ToString() />

が気に入らなかったようなので MembershipUserを使わずに
素直にloginページでUserIDをSession変数に格納して



SelectCommand="SELECT A.UserID, B.UserName, A.ファイル名, A.コメント
               FROM ファイル管理 AS A INNER JOIN aspnet_Users AS B ON A.UserId = B.UserId 
               WHERE A.UserID = @userID"

<SelectParameters>
     <asp:SessionParameter Name="userID" SessionField = loginID Type="String" />
</SelectParameters>


とすると解決しました。
無事に絞り込まれ、編集も削除も出来るようになりました。

Mr.T 様には本当にありがとうございました。


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


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

このトピックに書きこむ

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

管理者用

- Child Tree -