gridview回发没有发布 - VS2008

时间:2009-09-25 16:28:08

标签: asp.net visual-studio-2008

这是我的aspx:

<asp:UpdatePanel ID="resultPanel" runat="server" UpdateMode="Conditional">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="AddDocument" />
</Triggers>
<ContentTemplate>
    <asp:GridView ID="gridView" runat="server" AutoGenerateColumns="False" EnableSortingAndPagingCallbacks="True"
        AllowPaging="True" DataSourceID="FilesObjectDataSource" PageSize="5" OnRowCommand="gridView_RowCommand"
        DataKeyNames="FileGuid" HorizontalAlign="Left" Width="100%" BorderStyle="Solid"
        BorderColor="Black">
        <Columns>
            <asp:BoundField DataField="RID" HeaderText="ID" ReadOnly="True"></asp:BoundField>
            <asp:BoundField DataField="Category" HeaderText="SubCategory" ReadOnly="True">
            </asp:BoundField>
            <asp:BoundField DataField="FileTypeName" HeaderText="Type" ReadOnly="True">
            </asp:BoundField>
            <asp:BoundField DataField="FileGUID" Visible="false" />
            <asp:ButtonField Text="X" ButtonType="Button" ItemStyle-Width="20px" CommandName="DelFile">
                <ItemStyle Width="20px" />
            </asp:ButtonField>
        </Columns>
        <RowStyle CssClass="RowStyle" />
        <EmptyDataRowStyle CssClass="EmptyRowStyle" />
        <PagerStyle CssClass="PagerStyle" />
        <SelectedRowStyle CssClass="SelectedRowStyle" />
        <HeaderStyle CssClass="HeaderStyle" />
        <EditRowStyle CssClass="EditRowStyle" />
        <AlternatingRowStyle CssClass="AltRowStyle" />
    </asp:GridView>
</ContentTemplate>

这是我标记为'X'

的ButtonField的代码
protected void gridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "DelFile")
    {
        //Selected Row
        int rowIndex = Convert.ToInt32(e.CommandArgument);

        fileGuid = new Guid(gridView.DataKeys[rowIndex].Values["FileGuid"].ToString());

    }
}

有时它会导致对象引用没有设置,有时它会起作用。不确定为什么这会在生产中发生,而不是在开发和测试中。

2 个答案:

答案 0 :(得分:0)

我不确定它是否有任何区别,但是(“FileGuid”)中的案例

DataKeyNames="FileGuid"

fileGuid = new Guid(gridView.DataKeys[rowIndex].Values["FileGuid"].ToString());

不匹配(“FileGUID”)

<asp:BoundField DataField="FileGUID" Visible="false" />

答案 1 :(得分:0)

您可以使用这样的方式来访问行命令事件

中的值
 protected void gridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "DelFile")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        int documentID = Convert.ToInt32(gridView.DataKeys[index].Value);

         // Write your further code

    }
}