Gridview不触发事件

时间:2017-09-19 16:10:58

标签: asp.net vb.net gridview

我正在尝试使用Gridview控件上的事件。但它没有按预期发射事件。即,对于OnSelectedIndexChanged,当更改所选单元格/行时,没有任何反应。我尝试过OnSelectedIndexChanged以及OnRowUpdating。断点永远不会在gvQ15_RowUpdating中出现。我甚至尝试将OnTextChanged事件用于子文本框或gridview,但它们没有被触发。

标记

<asp:GridView AutoPostBack="true" ID="gvQ15" runat="server" AllowPaging="false" AutoGenerateColumns="false" >
    <Columns>
        <asp:TemplateField HeaderText="Prescription Medication Name" ItemStyle-Width="25%">
            <ItemTemplate>
                <asp:TextBox ID="txtPrescriptionMedicationName" runat="server" Width="100%" OnTextChanged="txtPrescriptionMedicationName_TextChanged" BordewWidth="0" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Date Originally Prescribed" ItemStyle-Width="10%">
            <ItemTemplate>
                <asp:TextBox ID="txtDateOriginallyPrescribed" runat="server" Style="min-width: 110px; width: 100%;" BorderWidth="0" OnTextChanged="txtDateOriginallyPrescribed_TextChanged" />
                <asp:MaskedEditExtender ID="meetxtDateOriginallyPrescribed" runat="server" MaskType="date" UserDateFormat="MonthDayYear" Mask="99/99/9999" TargetControlID="txtDateOriginallyPrescribed" ClearMaskOnLostFocus="true"  />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Frequency and Dosage" ItemStyle-Width="25%">
            <ItemTemplate>
                <asp:TextBox ID="txtFrequencyAndDosage" runat="server" Width="100%" BorderWidth="0" OnTextChanged="txtFrequencyAndDosage_TextChanged" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Condition" ItemStyle-Width="25%">
            <ItemTemplate>
                <asp:TextBox ID="txtCondition" runat="server" Width="100%" BorderWidth="0" OnTextChanged="txtCondition_TextChanged" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Onset Date" ItemStyle-Width="10%">
            <ItemTemplate>
                <asp:TextBox ID="txtConditionOnsetDate" runat="server" style="min-width:110px;width:100%" BorderWidth="0" OnTextChanged="txtConditionOnsetDate_TextChanged" />
                <asp:MaskedEditExtender ID="meeConditionOnsetDate" runat="server" MaskType="date" UserDateFormat="MonthDayYear" Mask="99/99/9999" TargetControlID="txtConditionOnsetDate" ClearMaskOnLostFocus="true" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

代码背后

 Protected Sub gvQ15_RowUpdating(sender As Object, e As GridViewUpdateEventArgs)
    Session("Prescriptions") = gvQ15.DataSource
 End Sub

1 个答案:

答案 0 :(得分:1)

CausesValidation="False"属性添加到CommandField。

<asp:commandfield ShowEditButton="True" CausesValidation="False" HeaderText="Edit"/>

或者,

EnableViewState="True"属性添加到GridView。

对于TemplateField,请使用:

<asp:TemplateField HeaderText="Command">
    <ItemTemplate>
        <asp:Button CommandName="Edit"   Text="Edit"   ID="btnEdit" Runat="server"></asp:Button>
        <asp:Button CommandName="Delete" Text="Delete" ID="btnDel"  Runat="server"></asp:Button>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:Button CommandName="Update" Text="Update" ID="btnUpdate"  Runat="server"></asp:Button>
        <asp:Button CommandName="Cancel" Text="Delete" ID="btnCancel"  Runat="server"></asp:Button>
    </EditItemTemplate>
</asp:TemplateField>