c# - ASP :GridView button with CommandArgument

标签 c# asp.net gridview webforms

我正在尝试通过单击我的按钮来获取 ID。我的按钮在 GridView 中

<asp:GridView runat="server" AutoGenerateColumns="false"
                            ID="UsersGridView" AllowPaging="true"
                            CssClass="table table-hover table-striped"
                            UseAccessibleHeader="true" GridLines="None">
                    <Columns>
                        <asp:BoundField DataField="User.FullName" HeaderText="User" />
                        <asp:BoundField DataField="Book.Title" HeaderText="Book" />
                        <asp:BoundField DataField="BooksReserved.DateOut" HeaderText="Return Date" 
                            FooterStyle-BackColor="#ff0000" DataFormatString="{0:d}" />
                        <asp:TemplateField ShowHeader="false">
                            <ItemTemplate>
                                <asp:LinkButton ID="userProfile" runat="server" OnCommand="userProfile_Command"
                                    CommandArgument='<% Eval("User.Id") %>'
                                    Text="Open User Profile" CssClass="btn btn-success" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

在 Page_Load 方法背后的代码中,我从 3 个表中为我的 gridview 加载数据:

protected void Page_Load(object sender, EventArgs e)
{
    // Users Grid
    var query = from u in db.Users
                join br in db.BooksReserveds on u.Id equals br.UserId
                join b in db.Books on br.BookId equals b.Id
                where br.DateOut < DateTime.Today
                orderby br.DateOut
                select new { User = u, BooksReserved = br, Book = b };

    UsersGridView.DataSource = query.ToList();
    UsersGridView.DataBind(); }

在点击按钮时,我尝试获取 id:

protected void userProfile_Command(object sender, CommandEventArgs e)
{
    try
    {
        int id = Int32.Parse(e.CommandArgument.ToString());
        var query = from u in db.Users
                    where u.Id == id
                    select u;
    } catch(Exception any)
    {
        Console.WriteLine(any.ToString());
    }
}

我遇到异常:“输入字符串的格式不正确。”

有人知道为什么吗?

谢谢

最佳答案

你忘了# .语法应为 <%# %>

<asp:LinkButton ID="userProfile" runat="server" OnCommand="userProfile_Command"
   CommandArgument='<%# Eval("User.Id") %>'
   Text="Open User Profile" CssClass="btn btn-success" />

关于c# - ASP :GridView button with CommandArgument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357907/

相关文章:

c# - 设置位掩码以针对等于 0xFFFF0000 的 int 使用的最方便的方法是什么

javascript - 隐藏/禁用 Ajax 表单的提交按钮,直到从下拉列表中进行选择

javascript - 下载在 GridView 中选中的文件的更好方法

asp.net - 将 MVC 2 项目升级到 MVC 5

php - 在 Yii2 中对计算字段进行排序( GridView )

c# - 使用颜色代码从 Gridview 导出到 excel

c# - IdentityServer4 中 token 端点的无效 HTTP 请求

c# - NUnit Has.Exactly(n).Items 断言抛出错误

c# - 将大量用户添加到 Active Directory 中的组

c# - 开发基于 Web 的应用程序进行销售时需要考虑哪些常见问题