Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 触发ItemCommand事件后无法刷新Listview_C#_Asp.net_Listview_Webforms - Fatal编程技术网

C# 触发ItemCommand事件后无法刷新Listview

C# 触发ItemCommand事件后无法刷新Listview,c#,asp.net,listview,webforms,C#,Asp.net,Listview,Webforms,我有一个允许编辑和删除的列表视图。 当我单击listview中的linkbutton时,它会启动page_load,然后加载到OnItemCommand。 在命令的末尾,我添加了DataBind,它不刷新我的listview,但删除了我的条目。 如果我将数据绑定更改为重定向回具有(…aspx?ID=…)的同一页面,它将返回一个新页面。但在调试模式下,我看到它在页面加载和数据绑定中运行 <asp:UpdatePanel ID="UpdateOptions" runat="server" &g

我有一个允许编辑和删除的列表视图。 当我单击listview中的linkbutton时,它会启动page_load,然后加载到OnItemCommand。 在命令的末尾,我添加了DataBind,它不刷新我的listview,但删除了我的条目。 如果我将数据绑定更改为重定向回具有(…aspx?ID=…)的同一页面,它将返回一个新页面。但在调试模式下,我看到它在页面加载和数据绑定中运行

<asp:UpdatePanel ID="UpdateOptions" runat="server" >
    <ContentTemplate>
        <asp:Panel ID="OPanel" runat="server" width="350px">
            <asp:ListView runat="server" ID="lvPollOptions" DataKeyNames="POptionID" OnItemCommand="lvPollOptions_ItemCommand" OnDataBound="lvPollOptions_ItemDataBound" >
                <LayoutTemplate>
                    <table cellpadding="0" cellspacing="0" border="0" width="300px">
                        <tr class="AdminListHeader">
                        </tr>

                        <tr id="itemPlaceholder" runat="server">
                        </tr>

                    </table>
                </LayoutTemplate>

                <ItemTemplate>
                    <tr>
                        <td>
                            <%#Eval("OptionText")%>
                        </td>

                        <td>
                            <%#Eval("Votes")%>
                        </td>

                        <td align="center">
                            <asp:ImageButton runat="server" ID="ibtnEditOption" CommandArgument='<%# Eval("POptionID").ToString() %>' CommandName="Edit" ImageUrl="~/images/buttons/EditPencil.gif" AlternateText="Edit" CssClass="AdminImg" />
                        </td>

                        <td>
                            <asp:ImageButton runat="server" ID="ibtnDeleteOption" CommandArgument='<%# Eval("POptionID").ToString() %>' CommandName="Delete" ImageUrl="~/images/buttons/delete.gif" AlternateText="Delete" CssClass="AdminImg" OnClientClick="return confirm('Warning: This will delete the Poll Option from the database.');" />
                        </td>
                    </tr>
                </ItemTemplate>

            </asp:ListView>

            <asp:Label ID="lblNoOption" runat="server" Text="No Options Added"></asp:Label>

            <table width="345px">
                <tr>
                    <td width="100px">
                        Option:
                    </td>

                    <td>
                        <asp:TextBox ID="txtOption" runat="server" width="200px"></asp:TextBox>
                    </td>
                </tr>
            </table>
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>

在我们开始之前-您的代码有安全风险,因为它容易,请确保您的查询

现在,您的问题不是很清楚,但如果我理解正确,您的意思是删除对象后,回发后列表视图不会刷新(例如,您仍然可以看到已删除的项目)。由于您正在UpdatePanel中运行,请确保在数据绑定后更新面板

像这样更新
PoolBindData

protected void PollBindData()
{
    SqlConnection connOption = new SqlConnection(connStr);
    connOption.Open();

    // POTENTIAL SECURITY RISK - MAKE SURE YOU PARAMETRIZE THE QUERY!!
    SqlDataAdapter da = new SqlDataAdapter("SELECT POptionID, OptionText, Votes FROM [PollOptions] Where PollID = '" + PID + "'", connOption);

    DataTable dsSel = new DataTable();
    da.Fill(dsSel);
    lvPollOptions.DataSource = dsSel;
    lvPollOptions.DataBind();
    connOption.Close();

    // Update panel
    UpdateOptions.Update();
}
protected void PollBindData()
{
    SqlConnection connOption = new SqlConnection(connStr);
    connOption.Open();

    // POTENTIAL SECURITY RISK - MAKE SURE YOU PARAMETRIZE THE QUERY!!
    SqlDataAdapter da = new SqlDataAdapter("SELECT POptionID, OptionText, Votes FROM [PollOptions] Where PollID = '" + PID + "'", connOption);

    DataTable dsSel = new DataTable();
    da.Fill(dsSel);
    lvPollOptions.DataSource = dsSel;
    lvPollOptions.DataBind();
    connOption.Close();

    // Update panel
    UpdateOptions.Update();
}