DetailsView编辑和新按钮不会更改DetailsView的模式

时间:2012-09-25 23:46:34

标签: asp.net vb.net webforms detailsview

我正在尝试编写一个DetailsView,但缺少一些编码。你能看一下这个编码,让我知道我错过了什么因为点击编辑按钮或新建按钮不会改变DetailsView的模式,所以我可以输入数据。

这是DetailsView的编码:

<asp:UpdatePanel 
    ID="UpdatePanelParentsSummary" 
    runat="server" 
    UpdateMode="Conditional">

    <ContentTemplate> 
        <asp:DetailsView 
            ID="DetailsViewParentsDetails" 
            runat="server" 
            Height="50px" 
            Width="404px"
            AutoGenerateRows="False">

            <Fields>
                <asp:TemplateField ShowHeader="False">

                    <ItemTemplate>
                        <asp:Button 
                            ID="ButtonEdit" 
                            runat="server" 
                            CausesValidation="False" 
                            CommandName="Edit" 
                            Text="Edit" />

                        &nbsp;
                        <asp:Button 
                            ID="ButtonNew" 
                            runat="server" 
                            CausesValidation="False" 
                            CommandName="New" 
                            Text="New" />

                        &nbsp;
                        <asp:Button 
                            ID="ButtonDelete" 
                            runat="server" 
                            CausesValidation="False" 
                            CommandName="Delete" 
                            Text="Delete" />

                            <AjaxToolKit:ConfirmButtonExtender ID="deleteButtonConfirmation" 
                                runat="server" 
                                ConfirmText='<%# "You are about to remove: " & vbcr & 
                                    Eval("FatherName") & vbcr & Eval("MotherName") & "!!!" &
                                    vbcrlf & "Are you sure you want to do this?" & vbcrlf &
                                    "Clicking the OK button will delete this parent." %>'
                                Enabled="True" 
                                TargetControlID="ButtonDelete">

                            </AjaxToolKit:ConfirmButtonExtender>
                    </ItemTemplate>

                    <EditItemTemplate>
                        <asp:Button 
                            ID="ButtonUpdate" 
                            runat="server" 
                            CausesValidation="True" 
                            CommandName="Update" 
                            Text="Update" />

                        &nbsp;
                        <asp:Button 
                            ID="ButtonCancelUpdates" 
                            runat="server" 
                            CausesValidation="False" 
                            CommandName="Cancel" 
                            Text="Cancel" />
                    </EditItemTemplate>

                    <InsertItemTemplate>
                        <asp:Button 
                            ID="ButtonInsert" 
                            runat="server" 
                            CausesValidation="True" 
                            CommandName="Insert" 
                            Text="Insert" />

                        &nbsp;
                        <asp:Button 
                            ID="ButtonCancelInsert" 
                            runat="server" 
                            CausesValidation="False" 
                            CommandName="Cancel" 
                            Text="Cancel" />
                    </InsertItemTemplate>

                </asp:TemplateField>

                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" Visible="False" />

                <asp:BoundField 
                    DataField="FatherName" 
                    HeaderText="Father's Name:">

                    <ItemStyle ForeColor="Blue" />
                </asp:BoundField>

                <asp:BoundField 
                    DataField="MotherName" 
                    HeaderText="Mother's Name:">

                    <ItemStyle ForeColor="Blue" />
                </asp:BoundField>

                <asp:BoundField 
                    DataField="FatherOccupation" 
                    HeaderText="Father's Occupation:">

                    <ItemStyle ForeColor="Blue" />
                </asp:BoundField>

                <asp:BoundField 
                    DataField="FatherEmploymentPlace" 
                    HeaderText="Father's Employment Place:">

                    <ItemStyle ForeColor="Blue" />
                </asp:BoundField>

                <asp:BoundField 
                    DataField="FatherWorkPhone" 
                    HeaderText="Father's Work Phone:">

                    <ItemStyle ForeColor="Blue" />
                </asp:BoundField>

            </Fields>

            <HeaderTemplate>
                <%#IIf(Eval("FatherName") = Nothing,
                    "Adding New Student", "Details For: " & Eval("FatherName") & " *** " & Eval("MotherName"))%>             
            </HeaderTemplate>
        </asp:DetailsView>
    </ContentTemplate>
</asp:UpdatePanel>

1 个答案:

答案 0 :(得分:2)

尝试将OnItemCommand事件处理程序添加到DetailsView。

<asp:DetailsView 
        ID="DetailsViewParentsDetails" 
        OnItemCommand="DetailsViewParentsDetails_ItemCommand"
        runat="server" 
        Height="50px" 
        Width="404px"
        AutoGenerateRows="False">

在您的代码隐藏文件(.cs)中,您需要添加以下内容:

protected void DetailsViewParentsDetails_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
    if (e.CommandName.Equals("New"))
    {
         this.DetailsViewParentsDetails.ChangeMode(DetailsViewMode.Insert);
         this.DetailsViewParentsDetails.DataBind();
    }
    else if (e.CommandName.Equals("Edit"))
    {
         this.DetailsViewParentsDetails.ChangeMode(DetailsViewMode.Edit);
         this.DetailsViewParentsDetails.DataBind();
    }
}

MSDN doc on DetailsView.ItemCommand - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.detailsview.itemcommand(v=vs.100).aspx