【问题标题】:Getting parameters in label from a Gridview with SQLdatasource on a buttonclick在按钮单击上使用 SQLdatasource 从 Gridview 获取标签中的参数
【发布时间】:2012-05-02 12:57:56
【问题描述】:

我想要完成的是,当我单击网格视图中的按钮时,该特定行的值必须显示在文本标签 lblID、lblName、...
我只是不知道该怎么做。
这是我的sqldatasource的代码:

<asp:SqlDataSource ID="srcProd" runat="server"  
ConnectionString="<%$ ConnectionStrings:ConnDB %>"   
ProviderName="<%$ ConnectionStrings:ConnDB.ProviderName %>"   
SelectCommand="SELECT p.tProdID, p.tProdImage, p.tProdBeschrijving, m.tMerkNaam, m.tMerkImage,   p.tProdVerkoop FROM tblProducten AS p INNER JOIN tblMerken AS m ON p.tMerkID = m.tMerkID ORDER BY m.tMerkNaam">  
</asp:SqlDataSource>

这是我正在谈论的 gridview 的屏幕截图。

当我按下其中一个按钮时,我想要例如lblID中显示的参数ID。

感谢所有帮助、提示和技巧。

【问题讨论】:

    标签: c# asp.net gridview sqldatasource


    【解决方案1】:

    为按钮分配一个CommandName(类似于“ShowDetails”左右)和一个CommandArgument(记录的ID)。现在单击按钮将触发网格的RowCommand 事件,将CommandNameCommandArgument 传递给e。然后从您的数据库中获取记录并填充您的控件:

    <asp:TemplateField>
        <ItemTemplate>
            <asp:Button runat="server" Text="Foo2" CommandArgument='<%# Eval("RowID") %>'
                CommandName="ShowDetails" />
        </ItemTemplate>
    </asp:TemplateField>
    
    
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Debug.WriteLine("Command Handler");
    }
    

    【讨论】:

    • Idd,我猜这是最佳实践。在某些时候,这种方法对我不起作用,不知道为什么。顺便说一句,你可以在这里指定多个参数吗? (而不是作为“;”分隔的字符串左右)
    • 据我所知,您不能指定多个参数。我也经常对此感到恼火......
    • 您可以,使用“;”分隔字符串以传递多个值。我认为这很脏,但有可能。
    【解决方案2】:

    所以基本上这可以通过两种方式完成:

    1. 在按钮后面添加服务器端点击处理程序并更新 UpdatePanel 中的标签(这种情况下我们不需要回发)
    2. 在按钮的“OnClientClick”事件上添加一些javascript来设置这个标签...这个方法可以在GridView的绑定方法中设置。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 2014-04-09
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多