2013-06-08 2 views
0

Я пытаюсь получить данные с SQL Server и использовать их в форме, но элемент управления formview не получит никаких данных из источника данных.Присвоение параметров sqldatasource

(Источник данных получает параметр при загрузке страницы)

Выход просто: «Там нет ничего, чтобы видеть здесь» и пустая таблица.

Вот источник данных и FormView теги:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:igroup20_test2ConnectionString %>" 
     SelectCommand="SELECT * FROM [member] where ([id] = @idd)"> 
    <SelectParameters> 
     <asp:Parameter Name="idd" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="id"> 
    <EmptyDataTemplate> 
    There is nothing to see here. 
    </EmptyDataTemplate> 
    <ItemTemplate> 
     <table> 
     <tr> 
      <td> 
       <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label> 
      </td> 
      <td> 
       <asp:Label ID="Label2" runat="server" Text='<%# Eval("f_name") %>'></asp:Label> 
      </td> 
     </tr> 
     </table> 
    </ItemTemplate> 
</asp:FormView> 

Вот мой код позади:

protected void Page_Load(object sender, EventArgs e) 
{ 
     SqlDataSource1.SelectParameters.Add("@idd", "077763554"); 
     FormView1.DataBind(); 
} 

ответ

1

Похоже, вы добавляете 2 параметра здесь. Один декларативный и один в вашем коде.

Попробуйте добавить только параметр в свой код. также измените название на idd вместо @idd.

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:igroup20_test2ConnectionString %>" 
     SelectCommand="SELECT * FROM [member] where ([id] = @idd)"> 
</asp:SqlDataSource> 

protected void Page_Load(object sender, EventArgs e) 
{ 
     SqlDataSource1.SelectParameters.Add("idd", "077763554"); 
     FormView1.DataBind(); 
} 
7

У вас есть две проблемы:

  1. первый вам не нужно добавить параметр еще раз - это уже определено в разметке
  2. вы не должны использовать @ в имени вашего параметра - только имя будет делать.

Так используйте этот код вместо:

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlDataSource1.SelectParameters["idd"].DefaultValue = "077763554"; 
    FormView1.DataBind(); 
} 

Это должно сделать трюк - установить .DefaultValue на существующем параметре, а также использовать имя idd параметра, как определено в разметке (<asp:Parameter Name="idd" Type="String" />)

Смежные вопросы