【问题标题】:asp button created using c# isn't showing使用 c# 创建的 asp 按钮未显示
【发布时间】:2021-09-12 11:27:56
【问题描述】:

我在 MyAdoHelperSQL.cs 中创建了一个 asp:Button,它应该出现在 adminRiddles.aspx 中,但是这个按钮没有出现。如果我在 Google Chrome 中运行代码时打开“检查”选项,我可以看到该按钮确实存在在代码中,但它没有显示出来。
我还在 adminRiddles.aspx 中创建了另一个具有完全相同代码的按钮(仅用于检查),这个按钮是可见的。
有什么问题?
我该如何解决?

代码:
MyAdoHelperSQL.cs

string printStr = "<div class='riddles'> <table>";
printStr += "<tr> <td> <asp:Button id='add"+idNum+ "' style='float:right; display:block;' runat='server' Text='confirm' Width='70px' OnClick='add_Click'></asp:button> </td> </tr> </table> </div>";
return printStr;

adminRiddles.aspx 使用 c# 函数调用上面的 MyAdoHelperSQL.cs 并将 printstr 字符串打印到表单中。
这是工作按钮的代码:

    <form runat="server">
                <div class='riddles'>
                    <table>
                            <tr>
                                <td> 
        <asp:Button id='Button2' style='float:right; display:block;' runat='server' Text='confirm' Width='70px' OnClick='add_Click'></asp:button>
                                </td>
                            </tr>
                     </table>
                 </div>
    </form>

谢谢!

【问题讨论】:

  • 查看这些问答:stackoverflow.com/…
  • @rene 我认为这不是我的问题。我只是看不到我的按钮,只是因为它是用 c# 创建的。
  • 如果您使用该 asp:Button 创建一个字符串,然后让 adminRiddles.aspx 将该字符串写入您的输出流,您肯定会遇到这个问题。您自己的诊断证实了这一点。
  • @rene 恐怕我没听懂你。你在说什么问题?另外,您能否将我链接到特定的 Q/A 而不是搜索页面?谢谢
  • 当然,让我做所有的研究。给你:stackoverflow.com/q/10397856/578411,这是调整后的搜索,以防你需要更多示例:stackoverflow.com/…

标签: c# html asp.net webforms


【解决方案1】:

您不能将这样的 asp 控件作为原始文本注入,这适用于原始 HTML,但不适用于服务器端需要了解的控件。

最好的方法是将此控件作为实际控件动态添加:

adminRiddles.aspx:给表格行和td一个ID并设置为runat="server"

<div class='riddles' id="riddlesdiv" runat="server">
<table id="riddlestable" runat="server">
    <tr id="riddlestr" runat="server">
        <td id="riddlestd" runat="server">      
        </td>   
    </tr>
</table>
</div>

adminRiddles.aspx.cs:在代码中添加控件

Button addButton = new Button();
addButton.ID = "add" + idNum;
addButton.Text = "confirm";
addButton.Click += add_Click;
riddlestd.Controls.Add(addButton);

如果您有多行,您可能需要更进一步,并动态添加表格行及其内容。

【讨论】:

  • 看起来很有帮助,但我有动态数量的 TR 和 TD。此页面显示网站用户发送给它的表格中的数据。我该怎么做?这意味着每个 td 都必须有一个唯一的 id 等。
  • 我的意思是我不能做你在这里写的,因为我正在使用一个名为 MyAdoHelperSQL.cs 的外部 c# 类,它使用我的数据库表。表格一直在更新,所以我需要准备好更改...
  • 我提到过更进一步并动态添加行及其内容和按钮。让您的 AdoHelperSQL.cs 类将数据集(或您从数据库中带回的任何内容)返回到 adminRiddles.aspx.cs(即从那里调用它)。然后循环遍历数据集中的每条记录,以答案中描述的方式将新的 tr、td、内容和按钮控件添加到表中。这个答案描述了如何用表格做到这一点:stackoverflow.com/questions/3789240/…
  • 我建议为此使用中继器 - 这就是它的用途。然后无需尝试将按钮和操作等注入页面。这样的解决方案充其量是混乱的,更糟糕​​的连接事件等是痛苦的。如果您需要重复某些内容,请使用中继器 - 它有这个名称是有原因的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
相关资源
最近更新 更多