Поле или свойство с именем не найдено в выбранном источнике данных - PullRequest
1 голос
/ 23 июня 2011

Я заполняю следующую 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 приходят из одной таблицы, а Username - из другогоТаблица.

    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();

Я получаю сообщение об ошибке, что поле или свойство с именем «FirstName» не было найдено в выбранном источнике данных.Таким образом, похоже, что имя пользователя правильно, но не FirstName или LastName.Я утроил, проверил, что у меня нет опечаток, поля в моей таблице действительно FirstName и LastName, а также в моей хранимой процедуре, которую я покажу ниже.Кто-нибудь видит, что я могу здесь делать не так?Заранее спасибо за любую помощь !!

@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 Ответ

1 голос
/ 23 июня 2011

Я думаю, что вы хотите использовать внутреннее объединение.

SELECT AgentLogin.Username, AgentDetail.FirstName, AgentDetail.LastName FROM Orders INNER JOIN AgentLogin ON AgentDetail.AgentNumID = AgentLogin.AgentNumID

Прежде чем пытаться создать хранимую процедуру, попробуйте вызвать функцию Select из кода из.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...