1

Visual Studio 2012 と MySQL を使用して最初の Web サイトを構築中です。どちらも本格的に使うのは初めてなので知識不足ですが、少しずつ覚えていきます。

職場のロックアウト/タグアウト データベースに使用する Web サイトを開発しようとしています。最終的にはレポート/タグを自動的に生成する機能が搭載される予定ですが、私はまだそこまで到達していません. 私ができるようにしたいのは、複合体用とマシン用の 2 つのドロップダウンリストを提供することです (これらは、指定されたデバイスの並べ替えに使用されます)。ユーザーが特定のコンプレックスを選択したときに、マシンのドロップダウン リストをそのコンプレックスに固有のマシンに限定したいと考えています。たとえば、私の SQL クエリは次のようになります。

SELECT * FROM machine WHERE complex_id = complex.complex_id ORDER BY machine_name;

machine.complex_id と complex.complex_id を比較するために、パラメーターを使用するのが正しいアプローチであると判断しました。

SELECT * FROM machine WHERE complex_id = @compid ORDER BY machine_name;

ただし、SQL ステートメントでのパラメーターの使用に悩まされています。次のページに目を通した後: MSDN、SQL ステートメントでパラメーターを使用する方法を理解することができました。しかし、実際にどのようにパラメーターを作成するのかは明確ではありませんでした。何度もグーグルで調べた後でも、私が達成しようとしていることに対する正しいアプローチとして本当に際立ったものは見つかりませんでした。

編集

<%@ Page Title="Lockout" Language="VB" MasterPageFile="~/Site.Master" 
AutoEventWireup="true" CodeBehind="Lockout.aspx.vb" Inherits="Lockout.Lockout" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">

<asp:DropDownList 
    ID="DropDownList_Complex" 
    runat="server" 
    DataTextField="complex_name"
    DataSourceID="SqlDataSource_Complex" 
    DataValueField="complex_id" 
    AutoPostBack="True" 
    AppendDataBoundItems="True">
    <asp:ListItem Value="" Selected="True">
        Select
    </asp:ListItem>
</asp:DropDownList>

<asp:DropDownList
    ID="DropDownList_Machine"
    runat="server"
    DataTextField="machine_name"
    DataSourceID="SqlDataSource_Machine"
    DataValueField="machine_id"
    AutoPostBack="True"
    AppendDataBoundItems="true">
    <asp:ListItem Value="" Selected="True">
        Select
    </asp:ListItem>
</asp:DropDownList>

<asp:SqlDataSource 
    ID="SqlDataSource_Complex" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:lockoutConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:lockoutConnectionString.ProviderName %>" 
    SelectCommand="SELECT complex_id, complex_name FROM complex ORDER BY complex_name">
</asp:SqlDataSource>

<asp:SqlDataSource
    ID="SqlDataSource_Machine"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:lockoutConnectionString %>"
    ProviderName="<%$ ConnectionStrings:lockoutConnectionString.ProviderName %>"
    SelectCommand="SELECT machine_id, machine_name, complex_id FROM machine ORDER BY machine_name">
</asp:SqlDataSource>

4

1 に答える 1

1

あなたが言及した最初のドロップダウン(複雑なもの)を指す(マシンのドロップダウンにデータを入力するもの)でControlParameterを使用したいとします。SqlDataSourceこのような:

<asp:SqlDataSource
    ID="SqlDataSource_Machine"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:lockoutConnectionString %>"
    ProviderName="<%$ ConnectionStrings:lockoutConnectionString.ProviderName %>"
    SelectCommand="SELECT machine_id, machine_name, complex_id FROM machine WHERE complex_id=@complex_id ORDER BY machine_name">
    <SelectParameters>
        <asp:ControlParameter Name="complex_id" ControlId="DropDownList_Complex" PropertyName="SelectedValue"/>
    </SelectParameters>
</asp:SqlDataSource>

このように、DropDownList_Complex で値を選択すると、次のドロップダウンにデータを入力するクエリのパラメーターが自動的に入力されます。

おそらく、DropDownList_Complex で "AutoPostBack" を true に設定する必要があることに注意してください (これを自動的にリロードするため)。

于 2013-07-02T18:49:24.927 に答える