2011-06-22 24 views
1

我填充下面的DataGrid從我的SQL數據庫與名稱的字段或屬性沒有被選擇的數據源

<asp:DataGrid ID="dgUsers" BackColor="#F7F9FD" AutoGenerateColumns="false" 
OnItemCommand="dgItemCommand" runat="server" > 
    <Columns> 
    <asp:BoundColumn HeaderText="Username" DataField="Username" /> 
    <asp:BoundColumn HeaderText="First Name" DataField="FirstName" /> 
    <asp:BoundColumn HeaderText="Last Name" DataField="LastName" /> 
    <asp:TemplateColumn HeaderText="Details"> 
     <ItemTemplate> 
      <asp:Button runat="server" Text="Open" CommandName="OpenDetails" 
         CommandArgument='<%# Eval("Username")%>' /> 
     </ItemTemplate> 
    </asp:TemplateColumn> 
    </Columns> 
</asp:DataGrid> 

我收到來自兩個不同的表在我的數據庫中的信息數據中發現, FirstName和LastName來自一個表,而用戶名來自不同的表。

cmd = new SqlCommand("storedProcedure", conn); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("Email", email); 
    cmd.Parameters.AddWithValue("FirstName", first); 
    cmd.Parameters.AddWithValue("LastName", last); 

    DataSet ds = new DataSet(); 
    SqlDataAdapter da = new SqlDataAdapter(); 
    da.SelectCommand = cmd; 
    da.Fill(ds); 

    dgUsers.DataSource = ds; 
    dgUsers.DataBind(); 

我得到的錯誤是名稱爲'名字'的字段或屬性在所選的數據源中找不到。所以它似乎正確得到用戶名,但不是名字或姓氏。我有三倍檢查,我沒有錯別字,我的表中的字段確實是名字和姓氏,以及我的存儲過程,我在下面顯示。有沒有人看到我可能在這裏做錯了?提前感謝任何幫助!

@Email varchar(MAX), 
@FirstName varchar(20), 
@LastName varchar(35) 

AS 

SELECT Username 
From AgentLogin.dbo.AgentLogin 
WHERE AgentNumID IN (SELECT AgentNumID FROM AgentLogin.dbo.AgentDetail WHERE 
     ((CHARINDEX(@FirstName, FirstName) != 0) OR (CHARINDEX(@LastName, LastName) 
     != 0))) OR (CHARINDEX(@Email, Email) != 0) 

SELECT FirstName, LastName 
From AgentLogin.dbo.AgentDetail 
WHERE AgentNumID IN (SELECT AgentNumID FROM AgentLogin.dbo.AgentLogin WHERE 
     (CHARINDEX(@Email, Email) != 0)) OR ((CHARINDEX(@FirstName, FirstName) != 0) 
     OR (CHARINDEX(@LastName, LastName) != 0)) 

回答

1

我想你想要使用一個內部連接。

SELECT AgentLogin.Username,AgentDetail.FirstName,AgentDetail.LastName 從接單INNER JOIN AgentLogin ON AgentDetail.AgentNumID = AgentLogin.AgentNumID

在嘗試創建一個存儲過程嘗試調用函數中的選擇從後面的代碼。

protected DataTable getTable() 
{ 
DataTable dt = new DataTable(); 
StringBuilder cmdText = new StringBuilder(); 
cmdText.Append("SELECT AgentLogin.Username, AgentDetail.FirstName, AgentDetail.LastName"); 
     cmdText.Append("FROM Orders INNER JOIN"); 
     cmdText.Append("AgentLogin ON AgentDetail.AgentNumID = AgentLogin.AgentNumID "); 

return dt; 
} 
相關問題