我有两个 asp:Labels,第一个替换为几个按钮,第二个替换为项目列表。
我想单击按钮来过滤项目。
按钮的内容是通过用 html 替换文本以编程方式添加的,并且工作正常。
ASP:
<form id="form1" runat="server">
<asp:Label id="filters" runat="server" Text="Filters here"/>
<asp:Label id="itemList" runat="server" Text="List of items here"/>
</form>
过滤器标签的结果 html:
<input type="submit" onclientclick="Load_Items(0)" runat="server" value="First"/>
<input type="submit" onclientclick="Load_Items(1)" runat="server" value="Second"/>
<input type="submit" onclientclick="Load_Items(2)" runat="server" value="Third"/>
相关的c#:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Load_Items(0);
}
}
public void Load_Items(int filterType)
{
//code to load items (pseudo below)
for each row in list
if filterType = itemType
build string
replace second label with string
}
在页面加载时,一切都按照我想要的方式发生,内容被第一项过滤(因此Load_Items(0)
),如果我在 Page_Load 中手动将 0 更改为另一个数字,它会按其他类型过滤,但是如果我单击按钮这是以编程方式添加的,除了看起来像页面刷新之外什么都没有发生。
我知道回发检查是通过在其之前和内部添加文本替换来工作的。
我还添加了一个 asp:button 以确保它与添加按钮的方式无关,如下所示(从搜索中推荐一些额外的东西):
<asp:Button runat="server" CausesValidation="False" onclientclick="Load_Items(2); return false;" text="Submit" />
那么可能是什么问题?