c# - 输入字符串的格式不正确 asp.net c#

标签 c# asp.net

我有一个网格,它正在向用户显示这是有效的。您可以单击编辑(图像按钮)或删除(图像按钮)来执行操作。但是如果我点击其中的一个,我会得到一个

Input string was not in a correct format

这不应该发生——我没有看到我的错误。有什么问题?

这是我的网格:

<asp:EntityDataSource ID="EntityDataSource1" runat="server"
    ConnectionString="name=HolidayTrackerEntities"
    DefaultContainerName="HolidayTrackerEntities" EnableFlattening="False"
    EntitySetName="HtUsers">
</asp:EntityDataSource>
<telerik:RadGrid ID="rgGrid" runat="server" DataSourceID="EntityDataSource1"
    AllowSorting="True" AllowPaging="True" PageSize="20" 
    AllowFilteringByColumn="True" ShowStatusBar="True" Width="100%" 
    CellSpacing="0" GridLines="None" OnItemCommand="rgGrid_ItemCommand">
    <MasterTableView AutoGenerateColumns="False" DataKeyNames="UserId">
        <NoRecordsTemplate>
            Can't find Users to display
        </NoRecordsTemplate>
        <Columns>
            <telerik:GridBoundColumn DataField="UserId" DataType="System.Int32"
                FilterControlAltText="Filter UserId column" HeaderText="UserId" 
                ReadOnly="True" SortExpression="UserId" UniqueName="UserId"
                Visible="false">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="FirstName"
                FilterControlAltText="Filter FirstName column"
                HeaderText="FirstName" ItemStyle-Width="60px"
                SortExpression="FirstName" UniqueName="FirstName">
                <ItemStyle Width="60px" />
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="LastName"
                FilterControlAltText="Filter LastName column"
                HeaderText="LastName" ItemStyle-Width="60px" 
                SortExpression="LastName" UniqueName="LastName">
                <ItemStyle Width="60px" />
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="UserName"
                FilterControlAltText="Filter UserName column"
                HeaderText="UserName" ItemStyle-Width="60px"
                SortExpression="UserName" UniqueName="UserName">
                <ItemStyle Width="60px" />
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Email"
                FilterControlAltText="Filter Email column"
                HeaderText="Email" SortExpression="Email" UniqueName="Email"
                Visible="False">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn UniqueName="DeleteColumn" 
                ItemStyle-HorizontalAlign="Right" ItemStyle-Width="20px"
                AllowFiltering="false">
                <ItemTemplate>
                    <telerik:RadButton ID="btnEdit" CommandName="Edit" runat="server" Width="20px" ToolTip="View Details" Height="20px">
                        <Image ImageUrl="~/Resources/Images/Grid/edit-app.png" IsBackgroundImage="true" />
                    </telerik:RadButton>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn UniqueName="Delete"
                ItemStyle-HorizontalAlign="Right" ItemStyle-Width="20px"
                AllowFiltering="false" FilterImageUrl="../Image/Filter.gif">
                <ItemTemplate>
                    <telerik:RadButton ID="btnDelete" CommandName="Delete" runat="server" Width="20px" ToolTip="Delte User" Height="20px">
                        <Image ImageUrl="~/Resources/Images/Grid/delete-app.png" IsBackgroundImage="true" />
                    </telerik:RadButton>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

正如我所说,没什么特别的。以下是隐藏代码中的按钮:

protected void rgGrid_ItemCommand(object sender, GridCommandEventArgs e)
{
    if (e.CommandName.Equals("Edit"))
    {
        int id = int.Parse(e.Item.Cells[2].Text);
        Response.Redirect("~/Administrator/UserEditPanel.aspx?userId=" + id);
    }
    else if (e.CommandName.Equals("Delete"))
    {
        int id = int.Parse(e.Item.Cells[2].Text);
        HtUser.DeleteUserById(id);
    }
}

我在User类中的删除函数

public static void DeleteUserById(int id)
{
    HolidayTrackerEntities ctx = HtEntityFactory.Context;
    HtUser userToDelete = ctx.HtUsers.Where(user => user.UserId == id).FirstOrDefault();

    //Get all the userroles where user is containing
    IEnumerable<HtUserRole> roles = ctx.HtUserRoles.Where(ur => ur.HtUsers.Where(x => x.UserId == id).Any());
    foreach (HtUserRole role in roles)
    {
        //Remove reference from htuserroles table
        role.HtUsers.Remove(userToDelete);
    }

    ctx.HtUsers.DeleteObject(userToDelete);
    ctx.SaveChanges();
}

最佳答案

比解析列文本更好的方法是将 UserId 分配给编辑和删除按钮的 CommandArgument 属性,然后在 rgGrid_ItemCommand< 中解析它。 将 UserId 分配给按钮:

<telerik:GridTemplateColumn UniqueName="DeleteColumn" ItemStyle-HorizontalAlign="Right" ItemStyle-Width="20px" AllowFiltering="false">
    <ItemTemplate>
        <telerik:RadButton ID="btnEdit" CommandName="Edit" runat="server" Width="20px" ToolTip="View Details"
       Height="20px" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "UserId")%>'>
            <Image ImageUrl="~/Resources/Images/Grid/edit-app.png" IsBackgroundImage="true" />
        </telerik:RadButton>
    </ItemTemplate>
</telerik:GridTemplateColumn>

然后在你的代码隐藏中:

protected void rgGrid_ItemCommand(object sender, GridCommandEventArgs e)
{
    var userId = int.Parse(e.CommandArgument.ToString());

    if (e.CommandName.Equals("Edit"))
    {
        Response.Redirect("~/Administrator/UserEditPanel.aspx?userId=" + userId);
    }
    else if (e.CommandName.Equals("Delete"))
    {
        HtUser.DeleteUserById(userId);
    }
}

关于c# - 输入字符串的格式不正确 asp.net c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657408/

相关文章:

asp.net - 如果在客户端机器上禁用 cookie, session 存储在哪里? session 中实际存储了什么?

c# - 通过传递逗号分隔值删除记录 SQL Server 和 C#

c# - 用其他子数组替换所有子数组的高效算法

c# - 如何使用自动映射器将源类型的父级映射到目标类型的集合中?

c# - 如何在linq to sql中获取随机行?

.net - 为什么我看不到为服务器端控件生成的 ID?

c# - WP7 日期未国际化?

c# - EF4 : Why isn't Translate() using Table mapping?

asp.net - C# Textbox 输入值的正则表达式

asp.net - pubxml web 发布工具 事件生命周期