2013-03-18 38 views
1

我在製作QueryString參數,因此我有兩個.aspx表單。一種形式Default.aspx包含三個字段SId,FirstName,LastName。當我提交這些值時,這些值將保存在數據庫中。現在我想在default2.aspx上的特定SId的網格上顯示此數據。網格通過SqlDataSource.SO獲取數據我想在按鈕點擊時調用SqlDataSource,網格應該顯示default2.aspx上特定SId的數據。如何在<asp:SqlDataSource>標記中運行SelectCommand

Default.aspx的

<body> 
    <form id="form1" runat="server"> 
    <div> 

    </div> 
<table cellpadding="2" cellspacing="5"> 
    <tr> 
     <td> 
      <asp:Label ID="lblId" runat="server" Text="SId"></asp:Label> 
     </td> 
     <td> 
      <asp:TextBox ID="tbid" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <asp:Label ID="lblname" runat="server" Text="FirstName"></asp:Label> 
     </td> 
     <td> 
      <asp:TextBox ID="tbfirstname" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <asp:Label ID="lbllastname" runat="server" Text="LastName"></asp:Label> 
     </td> 
     <td> 
      <asp:TextBox ID="tblastname" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     </td> 
     <td> 
      <asp:Button ID="btnsubmit" runat="server" Text="Submit" 
       onclick="btnsubmit_Click1" Width="102px" /> 
     </td> 
    </tr> 
</table> 
<br /> 

</form> 
</body> 

Default2.aspx

<body> 
<form id="form1" runat="server"> 
<div> 

    <table cellpadding="2" cellspacing="5"> 
     <tr> 
      <td> 
       SId</td> 
      <td> 
       <asp:TextBox ID="tbId" runat="server"></asp:TextBox> 
      </td> 
     </tr> 

     <tr> 
      <td> 
      </td> 
      <td> 
       <asp:Button ID="btnSearch" runat="server" Text="Search" 
        onclick="btnSearch_Click" /> 
      </td> 
     </tr> 

    </table> 
</div> 

<br /> 

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    AutoGenerateSelectButton="True" 
    DataSourceID="SqlDataSource1" EnableModelValidation="True" 
    onrowcommand="GridView1_RowCommand"> 
<Columns> 

     <asp:TemplateField HeaderText="SId"> 
      <ItemTemplate> 
      <asp:Label ID="lblSId" runat="server" Text='<%# Bind("SId") %>'></asp:Label> 
      </ItemTemplate> 

     </asp:TemplateField> 

     <asp:TemplateField HeaderText="FirstName"> 
      <ItemTemplate> 
      <asp:Label ID="lblFirstName" runat="server" Text='<%# Bind("FirstName")%>'> 

      </asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField HeaderText="LastName"> 
      <ItemTemplate> 
    <asp:Label ID="lblLastName" runat="server" Text='<%# Bind("LastName")%>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 

</Columns> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
    SelectCommand="SELECT * FROM [Student] where SId = @tbId"> 

<SelectParameters> 
     <asp:QueryStringParameter Name="SId" QueryStringField="SId" /> 
</SelectParameters> 
</asp:SqlDataSource> 
</form> 
</body> 

我想打電話給SqlDataSource1上按一下按鈕一樣..

Default2.aspx .cs

protected void btnSearch_Click(object sender, EventArgs e) 
{  
    string SId = tbId.Text; 
    SqlDataSource1.DataBind(); 

} 

回答

3

您不需要點擊按鈕。 SqlDataSource在每個帖子後面執行。搜索按鈕將發佈回發。但是你將需要改變一些東西。首先,你需要得到你的參數正確的,所以刪除這一項:

<asp:QueryStringParameter Name="SId" QueryStringField="SId" /> 

,並把這個在它的地方:

<asp:ControlParameter ControlID="tbId" PropertyName="Text" Name="tbId" /> 

,現在刪除所有代碼:

protected void btnSearch_Click(object sender, EventArgs e) 
{  
    string SId = tbId.Text; 
    SqlDataSource1.DataBind(); 
} 

和現在的SqlDataSource直接綁定到控制值,所以當用戶輸入一個新的控制值並點擊按鈕時,它將被應用並且新的數據被檢索而沒有任何你的交互。

+0

謝謝這是工作。 – 2013-03-18 12:45:37

+1

@ user2034832,太棒了,我很高興我可以幫忙! – 2013-03-18 12:46:30

相關問題