-1

私はチェックボックスを挿入するグリッドビューを持っていcheck_changedますが、テキストボックスにも値を表示している画像に記載されているように、次のコードを記述して課題 ID の値を取得しますが、SQL でこれらの文字列を使用すると:

Select * from IssueBook Where IssueId IN (values)

これらのコードを書くときに varchar を数値に変換するときにエラーが表示されますcheck_changedI have take IssueId (numeric)

Protected Sub CheckBox1_CheckedChanged1(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim x As String = ""
        For Each row As GridViewRow In GridView1.Rows
            Dim cb As CheckBox = row.FindControl("checkbox1")
            If cb IsNot Nothing AndAlso cb.Checked Then
                If x <> "" Then
                    x += ","
                End If
                x += row.Cells(1).Text
            End If
        Next
        RwId.Text = x
        Session("SelctdIsuedBokNo") = RwId.Text

データテーブルでは数値を使用しました。4,5,6,上記のコードをコンマ区切りなどの整数に変換するにはどうすればよいですか?

4

6 に答える 6

1

IN ステートメントには、それらの値を含む「文字列」ではなく、コンマで区切られた値のリストが必要です。

動的 SQL を作成し、それをコマンド (SqlCommand または SQL の実行に使用しているメソッド) に渡す必要があります。次のようなものです: (SqlClient を使用している場合)

SqlCommand cmd = new SqlCommand(String.Format("Select * from IssueBook Where IssueId IN ({0})", values), your_connection);

それが役に立てば幸い。

于 2013-05-16T13:13:48.463 に答える
0

この場合、SQL インジェクションを回避し、ID (Cells(1).Text 値) が整数である限り、セルから ID を収集し、それらを整数リストに安全に入力してから、コンマで結合して次の文字列にする必要があります。終わり

それに応じてコードを調整しました。

Protected Sub CheckBox1_CheckedChanged1(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim Values As List(Of Integer)'your integer list of IDs 
    For Each row As GridViewRow In GridView1.Rows
        Dim cb As CheckBox = row.FindControl("checkbox1")
        If cb IsNot Nothing AndAlso cb.Checked Then
            Values.Add(Integer.convert(row.Cells(1).Text))'add the ID
        End If
    Next
    RwId.Text = String.Join(",", Values)'pull out the list into a comma delimited string eg "2,45,67,87"
    Session("SelctdIsuedBokNo") = RwId.Text
于 2013-05-16T17:43:08.703 に答える
0

使ってみて

Integer.Parse()

また

Integer.TryParse()

それがうまくいくことを願っています。

于 2013-05-16T13:12:33.330 に答える
0

文字列 "4,5,6" を単一の整数値に変換することはできません。

あなたの最善の策は、選択を変更して varchar 値を受け入れることです。

于 2013-05-16T13:13:11.457 に答える
0

使用Convert.ToInt32();機能について

http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx

于 2013-05-16T13:08:58.273 に答える