OKこれで、私はエラーが発生しているのを知っています。私はそれを修正する方法を知らない。基本的に、ユーザーに特定の権限がない場合は、別のテーブルに参加する必要があります。しかし、.NETはとても厄介です。私はIF文で2つの異なるクエリを作成し、if文の外でそれを使用することはできません。私はこのためにいくつかの醜い回避策を考えることができますが、私はむしろそうではありません。私はかなり.NETに慣れています。私は危険なほど十分に知っています。同じ変数のw/ifステートメントを使用して異なるLINQデータソースをバインドする
Private Sub loadLeads()
Using db As New CRMDataDataContext(SQLConnectionString)
Dim count = 0
Dim l As IEnumerable(Of Company)
If CanViewAllLeads(User.Identity.Name, db) = True Then
Dim q = From leads In db.Companies _
Join s In db.CompanySources On s.CompanySourceID Equals leads.CompanySourceID _
Where leads.Active = True And leads.CompanyStatusID = 1 _
Select leads.CompanyID, _
leads.BusinessName, _
leads.Website, _
leads.Phone, _
leads.Fax, _
leads.LastContacted, _
leads.FollowUp, _
leads.CreatedBy, _
leads.Created, _
leads.UpdatedBy, _
leads.Updated, _
Source = s.Source
count = q.Count
l = q
Else
Dim q = From leads In db.Companies _
Join s In db.CompanySources On s.CompanySourceID Equals leads.CompanySourceID _
Join xref In db.UserCompaniesXrefs On leads.CompanyID Equals xref.CompanyID _
Where leads.Active = True And leads.CompanyStatusID = 1 And xref.UserID = NCGuid(User.Identity.Name) _
Select leads.CompanyID, _
leads.BusinessName, _
leads.Website, _
leads.Phone, _
leads.Fax, _
leads.LastContacted, _
leads.FollowUp, _
leads.CreatedBy, _
leads.Created, _
leads.UpdatedBy, _
leads.Updated, _
Source = s.Source
count = q.Count
l = q
End If
If count > 0 Then
dgLeads.DataSource = l
dgLeads.DataBind()
Else
pnlLeads.Visible = False
pnlNoLeads.Visible = True
End If
End Using
End Sub
私はエラーを取得する:型のオブジェクトをキャストすることができません「System.Data.Linq.DataQuery 1[VB$AnonymousType_1
11 [可能System.Guid、可能System.String、可能System.String、可能System.String、可能System.String、システム.Nullable 1[System.DateTime],System.Nullable
1 [System.DateTime]、System.Nullable 1[System.Guid],System.Nullable
1 [System.DateTime]、System.Nullable 1[System.Guid],System.Nullable
1 [System.DateTime]]] 'を入力してSystem.Collections.Generic.IEnumerable`1 [Ten11CRMLib.Company ] '。
このため、Dim lとしてIEnumerable(Of Company)はIEnumerableの会社ではなく、そのソースを取得しています。私は明示的に私のDataGridでそれを使用するソースを選択する必要があります。私はそれを不平を停止する何かを作ることはできますか?
、再び私は.NETに新しいです:私はそれを行うにq.countを使用する能力を失ったが、あなたは以下の動作するコードに見ることができるように私はそのための別の解決策を見つけました私が必要としていることに関する資料や資料を私が提供してくれれば、あなたは私の頭の中に少し行きました。私はDim Iを匿名にして、それを私が必要とするものに投げ込む方法に送る必要があると言っていると思いますか? – KacieHouser
なぜq自体をバインドしないのですか? qをlに割り当てず、qにバインドするだけで動作するはずです。あなたはASP.NET MVCを使用していますか? – Aliostad
いいえ私は残念ながらMVCを使用していませんが、私はしたいと思っていますが、うーん、私は撃たれました。私はwebformsを使用しています。バインディングqは機能しません。したがって、if文で宣言されているため、qは宣言されていません。 .NETについての一つのことは本当に嫌いです。それはif/else、宣言されるGOING、qを使うだけでは構築できません。しかし、私は解決策を見つけ出しました。最初は明示的な選択をしていなかったので、私は必要なことを理解しました。私はすぐに答えを追加します。 – KacieHouser