1

一部のフィールドに一意の値があるかどうかを確認したい。たとえば、テーブルのfield1、field2の値が「YES」であるかどうかを確認したい。両方が「はい」の場合は関数を呼び出しますが、一方の値が「いいえ」の場合は他の関数を呼び出します。selectステートメントで、クエリ文字列からIDを渡していることに注意してください。これどうやってするの?

protected void Check_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e) {
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
    SqlDataAdapter da = new SqlDataAdapter("SELECT ID, Field1, Field2 from MyTabel WHERE ID = '" + Request.QueryString["ID"] + "'", con);
    DataTable dt = new DataTable();
    da.Fill(dt);
}
4

1 に答える 1

4

特定の基準のセットが特定のレコードに存在するかどうかを判断するだけで十分な場合は、データベース側でこのチェックを実行してから、を使用して結果を取得することをお勧めします。ExecuteScalar

using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))
{
    using(SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTabel WHERE ID =@ID And (Field1='Yes' And Field2='Yes')" , con))
    {
        cmd.parameters.Add("@ID",Request.QueryString["ID"]);

        con.open();

        int result = cmd.ExecuteScalar();

        con.close();

        if(result == 1)
            // condition exists
            // so call success function
        else
            // call failure function
    }
}

アップデート:

これは質問に直接関係していない可能性がありますが、レコードIDを取得するには、次のdetailsView2つの手順を実行する必要があります。

  1. datakeynamesプロパティをdetailsViewテーブルの主キー名の名前(この場合は。)に設定しIDます。

    <asp:detailsview datakeynames="ID"
    
  2. これで、選択したIDにアクセスできます。

    int id = (int)detailsView.SelectedValue;
    

詳細については、こちらを確認してください

于 2012-11-02T20:46:51.313 に答える