0

人々が を使用して私のウェブサイトを検索するとき、と呼ばれる列の値を変更する列をクリックしGridViewたいと思います。機能するコードを見つけるのにかなりの時間を費やしているので、皆さんが助けてくれることを願っていました. 私は完全なNOOBなので、答えがわかっている場合は説明してください。checkboxSTATUSU

ボタンのコードCheckbox- 現在検索すると、文字列を に変換できないというメッセージが表示されbooleanます。

                <asp:TemplateField HeaderText="Successful Contact?">
                <EditItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" checked='<%#Bind("status")%>'  AutoPostBack="true" />
                </EditItemTemplate>
                <ItemTemplate> 
                <asp:CheckBox ID="CheckBox1" runat="server" checked='<%#Bind("status")%>'
                   Enabled="False" /></ItemTemplate>
            </asp:TemplateField>       

これはvbコードです

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
    For Each GridViewRow In GridView1.Rows

        Dim row As GridViewRow = GridView1.Rows(e.RowIndex)
        Dim value As Boolean
        value = DirectCast(GridView1.Rows(e.RowIndex).Cells(0).FindControl("CheckBox1"), CheckBox).Checked
        Dim connectionString As String = ConfigurationManager.ConnectionStrings("Data Source=server;Initial Catalog=i3FCC01;Integrated Security=True;").ConnectionString
        Dim com_sql As New SqlClient.SqlCommand
        Dim insertSql As String
        insertSql = "Update CallQueueFCC Set Status='U' where Id = @id"
        Using myConnection As New SqlConnection(connectionString)
            myConnection.Open()
            Dim myCommand As New SqlCommand(insertSql, myConnection)
            myCommand.Parameters.AddWithValue("@status", value)
            myCommand.ExecuteNonQuery()
            myConnection.Close()
        End Using
    Next
    GridView1.EditIndex = -1
    DataBind()
End Sub
4

2 に答える 2

0

前述のKiranと同様に、statusには文字列値があるため、行のデータバインドイベントで消火活動を行う必要があります。

マークアップ

<asp:TemplateField HeaderText="Successful Contact?">
            <EditItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server"   AutoPostBack="true" />
            </EditItemTemplate>
            <ItemTemplate> 
            <asp:CheckBox ID="CheckBox1" runat="server" 
               Enabled="False" /></ItemTemplate>
        </asp:TemplateField>   

背後にあるコード

   Protected Sub GridView1_RowDataBound(sender As Object, e As   System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

  If e.Row.RowType = DataControlRowType.DataRow Then
  'Evaluate the state of the check box, true when status =U , and false otherwise
  Dim itemstatus As Boolean=If(DataBinder.Eval(e.Row.DataItem, "Status"), True, False)
  Dim CheckBoxItemTemp As CheckBox=CType(e.Row.FindControl("CheckBox1"), CheckBox)
  CheckBoxItemTemp.Checked=itemstatus
  End if


  If e.Row.RowState & DataControlRowState.Edit Then
 'same as above but  now for edit item template
  Dim editstatus As Boolean=If(DataBinder.Eval(e.Row.DataItem, "Status"), True, False)
  Dim CheckBoxEditTemp As CheckBox=CType(e.Row.FindControl("CheckBox1"), CheckBox)
  CheckBoxEditTemp.Checked=editstatus
  End if

 End Sub
于 2013-01-20T19:38:30.767 に答える
0

ブール値を取るチェックボックスのチェック済み属性のステータス値をバインドしています。

ただし、文字列をブール値にバインドしているため、ステータスには文字列値があり、エラーがスローされます。

于 2013-01-20T16:08:38.233 に答える