2
Sub Page_Load(...)
    If Not IsPostBack Then
        BindData()
    End If
    gvCustomers.AllowPaging = False
    BindData()
    lblResult.Text = gvCustomers.Rows.Count.ToString & " records found "
    gvCustomers.AllowPaging = True
    BindData()
End Sub

Protected Sub btnClear_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClear.Click
    ' Simple clean up text to return the Gridview to it's default state
    searchBox.Text = ""
    SearchString = ""
    BindData()
End Sub

次に、これを gridview マークアップで:

<asp:Label ID="lblResult" style ="font-weight:bold; " runat="server" 
     CssClass="style26"></asp:Label>
... another markup goes here ...
<asp:button ID="btnClear" Text="Reset" runat="server" />

私たちがやりたいことは、ページの読み込み時にグリッドビューにレコードの総数を表示することです。ページの読み込みに関する限り、これは正常に機能します。レコードを検索すると、見つかった正しい数のレコードが表示されます。

問題の部分が来ます。[リセット] ボタン コントロールをクリックすると、gridview はデフォルトでレコードの総数に戻ります。一度リセットボタンを押すと、元の合計数に戻りません。

ページがグリッドビューのレコードの総数をリロードする前に、[リセット] ボタンを 2 回押す必要があります。

リセットボタンを初めて押したときにリロードするようにこれを修正する方法はありますか? 事前に感謝します

Private Sub BindData()
    Dim strSearch As String

    'Protect against SQL Injection
    strSearch = Replace(searchBox.Text, "'", "''", 1, -1, 1)

    Dim query As String = "SELECT r.RoleId,l.LoginId, l.fullname,l.UserName,r.UserRoles FROM tblLogin l Inner Join tblRoles r on l.rights = r.roleId WHERE l.fullname LIKE '%" & strSearch & "%' "
    Dim cmd As New SqlCommand(query)
    gvCustomers.DataSource = GetData(cmd)
    gvCustomers.DataBind()
End Sub
4

2 に答える 2

0

Why you can Use Container.DataItemIndex

<asp:TemplateField HeaderText="Slno" Visible="false">
<ItemTemplate>
<div style="margin-top: 0px; color: Black;">
<asp:Label ID="txtslno" ForeColor="#000f9f" Font-Size="8" runat="server" Text='<%# Container.DataItemIndex+1 %>'></asp:Label>
</div>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" Width="30px" />
</asp:TemplateField>
于 2013-09-29T02:42:45.077 に答える