私はアイデアを必要とする...注文サブセット
私は以下の表含む、ひねりを加えた古典的なシナリオを持っている:ユーザー、ロール、UsersInRolesを。
私のWebページには、特定の役割のすべてのユーザーを含む各役割に対して1つのComboboxes(つまりDropDownList + TextBox)があります。私の意図が強調することである - 私が代わりに含まれているためにそれらのそれぞれを希望のみ与えられた役割の
- ユーザー(名前順)...すべてのユーザーの完全なリストですが、グループ化されたので、同じよう命じましたこれらのアイテム。
- (名前順)なしリピートを有するユーザーの残りの部分、
私はいくつかのSQLで遊んでてきたとVBが解決に向かって自分の道を動作するようにしようとしたが、それは明らかではないが、まだあります最善のアプローチ、またはソリューションを完全に実装する方法はありません。私は小さなビットとピースを考え出しただけです。私は今のところコードを投稿することを控えるように私を許してください。私はいくつかの新鮮なアイデアとサーバー上で多くの需要を置かない巧妙なソリューションを望んでいます。関連する提案のお手伝いを
は、ここに私のテーブルの構造です:
Users (ID, Username, Name)
Roles (ID, Role)
UsersInRoles (ID, UserID, RoleID)
そして、私はそれに書いたクエリは、私が私が私が考えるたい場所に到達するために必要なすべてのサブグループを与えました。
select u.ID, Name, RoleID from UsersInRoles
inner join Users u on UserID = u.ID --This is only to return a name rather than ID
order by ReviewerRoleID, Name
Timさんのお勧めを使用して、このようなコードビハインドを使用して、それぞれのドロップダウンリストにバインドすることがあります。私が持っている一つの懸念は、ユーザーがページにアクセスするたびにサーバーに潜在的な負担をかける、各ロールのクエリを実行していることです。
Private Sub PopulateUserInRoleCombobox(ByVal key As Integer, ByVal ddl As DropDownList)
Try
Dim dt As New DataTable
Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("tcomConnectionString").ConnectionString)
Dim spSelect As New SqlCommand("spGetUserInRoleList", connection)
spSelect.CommandType = CommandType.StoredProcedure
Dim RoleID As New SqlParameter("@GivenRoleID", SqlDbType.Int)
RoleID.Value = key
spSelect.Parameters.Add(RoleID)
Dim da As New SqlDataAdapter(spSelect)
da.Fill(dt)
End Using
ddl.DataSource = dt
ddl.DataBind() 'Bind results to the DropDownList
Catch ex As Exception
'Error Message
End Try
End Sub
そして、最後のステップは、それが与えられた役割のメンバーだかいないかに応じて、各リスト項目をスタイリングのためのJavascriptを書くために最善の方法を把握することです。 >。 <
ありがとうございました:)
おかげでティム、あなたは少しのことをしてくださいクリアする気でしょうか?あなたの提案を私のDBの構造にマッピングするのに少し面倒です。さらに、これは私の全体的な目標にはあまり役立たない。私はあなたが私の質問を再読することができれば感謝しています:( – Chiramisu
あなたはどのような種類の構造やイベントを使用しているのかは言及していないので、私はSQL Serverを想定し、 Membership Provider。このsql-queryは、すべてのUsersnamesとそのロールを返します.SqlParameter 2として指定されたRoleIDの順番で並べられます。2. UserName。したがって、特定のグループに所属するユーザーが最初に表示されます(名前によってサブオーダーされます)。このグループに所属していないユーザーは、次のとおりです(名前でサブオーダー)。繰り返しユーザーはありません( 'WHERE UserRoleNumber = 1'によって引き起こされます)。現在のグループが常に表示されます(ユーザーがこのグループに属している場合)。 –
私はこのソリューションが非常に私のデータ、優れた性能を得るために好きです。今、完璧なVB.NETコードにこれをどのように統合するかについてのアイデアを手伝ってくれるだけであれば。私は私の考えを含めて私の答えを編集します。ありがとう:) – Chiramisu