0

私は現在ASP.NETを学んでおり、実際には今日が2日目です。

だから今、私はデータベースとテーブルから最初の名前だけを選択する動的に生成されたドロップダウンを最初に持つページを作成したいと考えています。これは私が働いています

次に、データベースからのすべてのデータを表示する gridview テーブルがあります。現在、ページがクラッシュしないように名前をハードコーディングしています (100000 行のデータがあります)。

最後に、コードを投稿すると、チェックボックスが表示されます。これをクリックすると、グリッドビューが表示されます。それは私が今日学んだ教訓の一部だったので、私はちょうどそれを試しています.

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <h1>Test of First Database pull</h1>
        <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" Text="Show Panel" OnCheckedChanged="checkbox1_CheckedChanged" />
        <br />
         <br />
        <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" DataTextField="FirstName" DataValueField="FirstName" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
         <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ASP.NETConnectionString1 %>" ProviderName="<%$ ConnectionStrings:ASP.NETConnectionString1.ProviderName %>" SelectCommand="SELECT DISTINCT [FirstName] FROM [SampleData] ORDER BY 'FirstName' "></asp:SqlDataSource>

         <br />
         <br />
        <asp:Panel ID="Panel1" runat="server" Visible="False" >
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
                <Columns>
                    <asp:BoundField DataField="SSN" HeaderText="SSN" SortExpression="SSN" />
                    <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
                    <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                    <asp:BoundField DataField="HomeStreet" HeaderText="HomeStreet" SortExpression="HomeStreet" />
                    <asp:BoundField DataField="HomeCity" HeaderText="HomeCity" SortExpression="HomeCity" />
                    <asp:BoundField DataField="HomeState" HeaderText="HomeState" SortExpression="HomeState" />
                    <asp:BoundField DataField="HomeZip" HeaderText="HomeZip" SortExpression="HomeZip" />
                    <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" />
                    <asp:BoundField DataField="CompanyStreet" HeaderText="CompanyStreet" SortExpression="CompanyStreet" />
                    <asp:BoundField DataField="CompanyCity" HeaderText="CompanyCity" SortExpression="CompanyCity" />
                    <asp:BoundField DataField="CompanyState" HeaderText="CompanyState" SortExpression="CompanyState" />
                    <asp:BoundField DataField="CompanyZip" HeaderText="CompanyZip" SortExpression="CompanyZip" />
                    <asp:BoundField DataField="HomePhone" HeaderText="HomePhone" SortExpression="HomePhone" />
                    <asp:BoundField DataField="CompanyPhone" HeaderText="CompanyPhone" SortExpression="CompanyPhone" />
                    <asp:BoundField DataField="CellPhone" HeaderText="CellPhone" SortExpression="CellPhone" />
                    <asp:BoundField DataField="DateOfBirth" HeaderText="DateOfBirth" SortExpression="DateOfBirth" />
                    <asp:BoundField DataField="DateOfHire" HeaderText="DateOfHire" SortExpression="DateOfHire" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ASP.NETConnectionString1 %>" 
                ProviderName="<%$ ConnectionStrings:ASP.NETConnectionString1.ProviderName %>" 
                SelectCommand="SELECT [SSN], [LastName], [FirstName], [HomeStreet], [HomeCity], [HomeState], [HomeZip], [CompanyName], 
                [CompanyStreet], [CompanyCity], [CompanyState], [CompanyZip], [HomePhone], [CompanyPhone], [CellPhone], 
                [DateOfBirth], [DateOfHire] FROM [SampleData] WHERE [FirstName] = 'Bob' "></asp:SqlDataSource>


        </asp:Panel>
    </div>
    </form>
</body>
</html>

セッションを呼び出す C# の部分は次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Demos_GridView : System.Web.UI.Page
{


    protected void Page_Load(object sender, EventArgs e)
    {
          string name = DropDownList1.SelectedValue;
           Session["FName"] = name;
    }
    protected void checkbox1_CheckedChanged(object sender, EventArgs e)
    {
        Panel1.Visible = CheckBox1.Checked;
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}

ご覧のとおり、セッションを「私は信じています」と呼びました。これを使用してみました

 <%:Session["user"]%>

そのSQLクエリ内で、私は<%%>をasp sql呼び出し内に持つことができないと言っていました。だから誰かが私を助けることができれば、それは素晴らしいことです.

4

1 に答える 1

0

おそらく、ユーザーの名前をSqlParameter?として追加する必要があります。

SqlDataSource1.SelectParameters.Add(new SqlParameter("@Name", name));
// Of course don't forget to edit your query: WHERE [FirstName] = @Name

上記のように動作するはずです(テストしていないことに注意してください)。

編集:

または@Nameからパラメーターの値を設定するように SqlDataSource を構成することで、このプロセスをさらに短縮できます。ControlSession

于 2013-06-25T23:48:26.443 に答える