ASP.NET OnDataBinding使数据不更新

时间:2013-09-15 18:47:50

标签: asp.net

我需要帮助来查看我的代码。它似乎没有更新数据。如果默认创建它可以成功更新。当我在detailview文本框中放入一些自动值的代码时,它会在更新之前返回到更新,因为我认为更新不成功 ASP.NET代码:

Please Scan Your Student Card<br />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>&nbsp;<asp:Button ID="Button1"
        runat="server" Text="Enter" /><br />
    <asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False"
        DataKeyNames="IDCardNo" DataSourceID="SqlDataSource1" Height="50px" Width="541px" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2">
        <Fields>
            <asp:TemplateField HeaderText="Name" SortExpression="Name">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label5" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="IDCardNo" SortExpression="IDCardNo">
                <EditItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("IDCardNo") %>'></asp:Label>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("IDCardNo") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label4" runat="server" Text='<%# Bind("IDCardNo") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="StudentNo" SortExpression="StudentNo">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("StudentNo") %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("StudentNo") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label3" runat="server" Text='<%# Bind("StudentNo") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="TimeInClass" SortExpression="TimeInClass">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("TimeInClass") %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("TimeInClass") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("TimeInClass") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="TimeOutClass" SortExpression="TimeOutClass">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" 
                    Text='<%# Bind("TimeOutClass") %>'
                    OnDataBinding="TextBox1_DataBinding">
                    </asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("TimeOutClass") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("TimeOutClass") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField ShowHeader="False">
                <EditItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"
                        Text="Update"></asp:LinkButton>
                    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
                        Text="Cancel"></asp:LinkButton>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Insert"
                        Text="Insert"></asp:LinkButton>
                    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
                        Text="Cancel"></asp:LinkButton>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"
                        Text="Edit"></asp:LinkButton>
                    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="New"
                        Text="New"></asp:LinkButton>
                    <asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Delete"
                        Text="Delete"></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Fields>
        <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
        <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
        <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
        <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
    </asp:DetailsView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [Student] WHERE [IDCardNo] = @original_IDCardNo AND (([Name] = @original_Name) OR ([Name] IS NULL AND @original_Name IS NULL)) AND (([StudentNo] = @original_StudentNo) OR ([StudentNo] IS NULL AND @original_StudentNo IS NULL)) AND (([TimeInClass] = @original_TimeInClass) OR ([TimeInClass] IS NULL AND @original_TimeInClass IS NULL)) AND (([TimeOutClass] = @original_TimeOutClass) OR ([TimeOutClass] IS NULL AND @original_TimeOutClass IS NULL))"
        InsertCommand="INSERT INTO [Student] ([Name], [IDCardNo], [StudentNo], [TimeInClass], [TimeOutClass]) VALUES (@Name, @IDCardNo, @StudentNo, @TimeInClass, @TimeOutClass)"
        OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [Student] WHERE ([IDCardNo] = @IDCardNo)"
        UpdateCommand="UPDATE [Student] SET [Name] = @Name, [StudentNo] = @StudentNo, [TimeInClass] = @TimeInClass, [TimeOutClass] = @TimeOutClass WHERE [IDCardNo] = @original_IDCardNo AND (([Name] = @original_Name) OR ([Name] IS NULL AND @original_Name IS NULL)) AND (([StudentNo] = @original_StudentNo) OR ([StudentNo] IS NULL AND @original_StudentNo IS NULL)) AND (([TimeInClass] = @original_TimeInClass) OR ([TimeInClass] IS NULL AND @original_TimeInClass IS NULL)) AND (([TimeOutClass] = @original_TimeOutClass) OR ([TimeOutClass] IS NULL AND @original_TimeOutClass IS NULL))">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" Name="IDCardNo" PropertyName="Text" Type="String" />
        </SelectParameters>
        <DeleteParameters>
            <asp:Parameter Name="original_IDCardNo" Type="String" />
            <asp:Parameter Name="original_Name" Type="String" />
            <asp:Parameter Name="original_StudentNo" Type="String" />
            <asp:Parameter Name="original_TimeInClass" Type="String" />
            <asp:Parameter Name="original_TimeOutClass" Type="String" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="StudentNo" Type="String" />
            <asp:Parameter Name="TimeInClass" Type="String" />
            <asp:Parameter Name="TimeOutClass" Type="String" />
            <asp:Parameter Name="original_IDCardNo" Type="String" />
            <asp:Parameter Name="original_Name" Type="String" />
            <asp:Parameter Name="original_StudentNo" Type="String" />
            <asp:Parameter Name="original_TimeInClass" Type="String" />
            <asp:Parameter Name="original_TimeOutClass" Type="String" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="Name" Type="String" />
            <asp:Parameter Name="IDCardNo" Type="String" />
            <asp:Parameter Name="StudentNo" Type="String" />
            <asp:Parameter Name="TimeInClass" Type="String" />
            <asp:Parameter Name="TimeOutClass" Type="String" />
        </InsertParameters>
    </asp:SqlDataSource>

VB代码

    Protected Sub TextBox1_DataBinding(ByVal sender As Object, ByVal e As EventArgs)

    Dim TextToTime As New TextBox
    TextToTime = DetailsView1.FindControl("TextBox1")
    TextToTime.Text = DateTime.Now
End Sub


当我在TimeOutClass databind上的EditItemTemplate Textbox1中使用代码(OnDataBinding =“TextBox1_DataBinding”)时,它开始不更新。

1 个答案:

答案 0 :(得分:-1)

删除OnDataBinding =“TextBox1_DataBinding”&gt;

<EditItemTemplate>
     <asp:TextBox ID="TextBox1" runat="server" 
     Text='<%# Bind("TimeOutClass") %>'
     OnDataBinding="TextBox1_DataBinding">
     </asp:TextBox>
</EditItemTemplate>

更改为OnPreRender =“TextBox1_DataBinding”&gt;

<EditItemTemplate>
     <asp:TextBox ID="TextBox1" runat="server" 
     Text='<%# Bind("TimeOutClass") %>'
     OnPreRender ="TextBox1_DataBinding">
     </asp:TextBox>
</EditItemTemplate>

这应该有所帮助。