【问题标题】:CommandArgument DataBinding IssueCommandArgument 数据绑定问题
【发布时间】:2015-09-14 10:44:25
【问题描述】:

我有一个显示数据库值的 sql 数据集 gridview 表。我试图将我的命令参数指向我的 SQL 数据集中的 compName 变量(如下面的代码所示),但我不断收到以下错误:

“DataBinding:‘System.Data.DataRowView’不包含名为‘compName’的属性。”

我的 C# 代码:

protected void searchTheDB()
{
    string s = "SELECT compName As 'Company/Organization Name', btcAddr As 'Bitcoin Address', Premium_User as 'Premium User'," + 
    "upvote as 'Upvotes',downvote As 'Downvotes' FROM clientDataTable WHERE compName LIKE '%" + searchBox.Text + "%'";

    try
    {
        SqlConnection forSearch = new SqlConnection(connectionString);
        SqlDataAdapter search = new SqlDataAdapter(s, forSearch);
        DataSet dB = new DataSet();
        search.Fill(dB);
        searchGridView.DataSource = dB;
        searchGridView.DataBind();
        searchBox.Text = String.Empty;
    }
    catch (SqlException exp)
    {
        throw new InvalidOperationException("Sorry, the website is experiencing difficulties, please try again, error: ", exp);
    }
}

asp.net 代码:

<asp:GridView ID="searchGridView" runat="server" CellPadding="10" ForeColor="#333333" GridLines="None" Height="161px" Width="935px" CellSpacing="5" HorizontalAlign="Justify" BorderStyle="Solid" OnRowCommand="searchGridView_RowCommand">
                     <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                     <Columns>
                         <asp:TemplateField>
                              <ItemTemplate>
                              <asp:Button ID="DownButton" runat="server" CommandName="Upvote" CommandArgument='<%#Eval("compName")%>' Text="Upvote"> </asp:Button>
                              <asp:Button ID="UpButton" runat="server" CommandName="Downvote" CommandArgument='<%#Eval("compName")%>' Text="Downvote"> </asp:Button>
                              </ItemTemplate>
                         </asp:TemplateField>
                     </Columns>

                     <EditRowStyle BackColor="#999999" />
                     <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                     <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                     <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                     <SortedAscendingCellStyle BackColor="#E9E7E2" />
                     <SortedAscendingHeaderStyle BackColor="#506C8C" />
                     <SortedDescendingCellStyle BackColor="#FFFDF8" />
                     <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                 </asp:GridView>

非常感谢您的帮助!

【问题讨论】:

    标签: c# asp.net data-binding


    【解决方案1】:

    注意查询的样子:

    SELECT compName As 'Company/Organization Name'
    

    结果集中没有名为compName 的列,只有Company/Organization Name。因此数据集对象对compName 一无所知。所以理论上你的数据绑定应该是这样的:

    CommandArgument='<%#Eval("Company/Organization Name")%>'
    

    但在实践中,我不完全确定这样的列名是否可以正常工作,因为空格(不太关心)和正斜杠(更关心)。所以我会考虑简化列别名,甚至完全摆脱它们——无论如何,除了数据绑定之外,你不会将它们用于其他任何事情,对吧?

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 2017-02-16
      • 2011-10-18
      • 2021-01-04
      • 2011-09-12
      • 2011-04-08
      相关资源
      最近更新 更多