2010-11-21 3 views
1

이 질문에 대한 질문이 많이 있지만 그들 중 하나에 대한 답변을 사용하여 내 문제를 해결할 수 없었어요 (많은, 많은 시도 후 ..)VB.net - 확인 Gridview 확인란 데이터베이스의 불리언 필드 업데이 트를

저는 asp.net 웹 응용 프로그램을 만드는 vb.net에서 일하고 있습니다. 내가 SqlDataSource와 내 페이지에서의 GridView이 다음의 GridView는 체크 박스에 제대로 채워집니다

<asp:SqlDataSource ID="msgUnread" runat="server" 
ConnectionString="<%$ ConnectionStrings:edinsec %>" 

SelectCommand="SELECT [msgdate], [email], [name], [message], [readit] FROM [messages]" 
UpdateCommand="UPDATE messages SET readit = 'True' WHERE (msgid = @msgid)"> 
     <UpdateParameters> 
    <asp:Parameter Name="msgid" /> 
</UpdateParameters> 
    </asp:SqlDataSource> 


    <asp:GridView ID="unreadMessages" runat="server" AutoGenerateColumns="False" 
BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" 
CellPadding="3" DataSourceID="msgUnread"> 
<RowStyle ForeColor="#000066" /> 
<Columns> 
    <asp:BoundField DataField="msgdate" HeaderText="Date &amp; time" 
     SortExpression="msgdate" /> 
    <asp:BoundField DataField="email" HeaderText="Email" 
     SortExpression="email" /> 
    <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" /> 
       <asp:TemplateField HeaderText="Mark as read" SortExpression="readit"> 
     <%--<EditItemTemplate> 
      <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("readit") %>' OnCheckedChange="CheckBox1_CheckedChanged" /> 
     </EditItemTemplate>--%> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("readit") %>' OnCheckChanged="CheckBox1_CheckedChanged" AutoPostBack="true"/> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
<FooterStyle BackColor="White" ForeColor="#000066" /> 
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> 
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> 
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> 
    </asp:GridView> 

'값이 제대로 표시되지를합니다 ('readit '필드는 비트 필드, 즉 부울입니다). 확인란을 클릭하면 데이터베이스에서 부울 값을 업데이트하도록 스크립트를 가져 오려고합니다. 비록 내가 스크립트를 클릭 (심지어 MsgBox조차도)에 반응시킬 수는 없지만, 현재로서는. 당신은 내가 WithEvents는 놀고 있었는데하지만 도움이 보이지 않았다 볼 수 있듯이

Public Partial Class enqur 
Inherits System.Web.UI.Page 
WithEvents CheckBox1 As CheckBox 


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

End Sub 

Public Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) 
    MsgBox("test") 
End Sub 

End Class 

:

여기 내 코드 숨김입니다. 위의 코드에서 내가 얻으려고했던 것은 체크 박스 클릭에 대한 반응 이었지만 아무런 오류도 발생하지 않았습니다.

나는 꽤 난처한 상황이다. 누구든지 도와 줄 수 있습니까? 많이 주시면 감사하겠습니다 :)

답변

1

많이 나는 영문 파일에이 코드를 결국에 대해 faffing 후 :

Public Sub checkbox_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) 'Handles checkbox.CheckedChanged 
    Dim box As CheckBox = DirectCast(sender, CheckBox) 



    If box.Checked = True Then 
    MsgBox("checked!") 
    Else 
    MsgBox("unchecked!") 
    End If 



End Sub 

... 온 제대로 발사 : 코드 숨김에서이 ​​

<asp:TemplateField HeaderText="readit" SortExpression="readit"> 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox_CheckedChanged" Checked='<%# Bind("readit") %>' 
      Enabled="true" /> 
    </ItemTemplate> 
    <EditItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox_CheckedChanged" Checked='<%# Bind("readit") %>' /> 
    </EditItemTemplate> 
     </asp:TemplateField> 

... 그리고 각 확인란을 클릭하십시오. 이제는 그 (것)들에게 무언가를 ... 무언가를하는 그 (것)들을 만들기 위하여 지금

0

변경

Public Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) 

Public Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles CheckBox1.CheckedChange 

에 기본적으로 당신은 마지막에 핸들을 CheckBox1.CheckedChange 잊어 버렸습니다.

+0

감사합니다. 내가 여전히 어떤 피드백도받지 못한다고 덧붙일 때 - MsgBox가 작동하지 않습니다. – melat0nin

0

과실 : 나가 "Handles CheckBox1.CheckedChanged"를 부호 뒤 단면도의 밑에 추가 할 때, CheckBox1는 밑줄이 그어지고 뒤에 오는 과실을 얻는다 : "Handles 절은 함유 유형 또는 그 기본 유형 중 하나 "로 분류된다. 어떻게 제거 할 수 있습니까? 방금 코드를 삭제하고 코드를 실행했습니다.

GridView 확인란으로 표시되는 DoNotMail 부울 값을 변경하고 확인란이 0 (거짓, 메일)에서 1 (참, 메일하지 않음)으로 선택되면 데이터베이스에서 자동으로 업데이트하려면 여기에서 사용한 코드를 사용하십시오 . 나는 뒤에 default.aspx.vb 코드에 대한

추가 :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    lastname.Focus() //sets the focus on the last name text box 
    If Page.IsPostBack Then 
     Response.Write("The DoNotMail value has been changed in the database for the selected field") 
    End If 

End Sub 

Public Sub checkbox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) 
    Dim box As CheckBox = DirectCast(sender, CheckBox) 
    If box.Checked = True Then 
     donotmail.SelectedValue = 1 
    Else 
     donotmail.SelectedValue = 0 
    End If 


End Sub 

을 내가 추가 한 Default.aspx 페이지의 경우 : 답장을

    <asp:TemplateField HeaderText="DoNotMail" SortExpression="DoNotMail">  
       <ItemTemplate>   
       <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox1_CheckedChanged" Checked='<%# Bind("DoNotMail") %>' 
           Enabled="true" />  
       </ItemTemplate>  
       <EditItemTemplate>   
       <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox1_CheckedChanged" Checked='<%# Bind("DoNotMail") %>' />  
       </EditItemTemplate>  
       </asp:TemplateField> 
관련 문제