这是我的转发器:
<asp:Repeater ID="myRepeater" OnItemCommand="myRepeater_ItemCommand" runat="server" OnItemDataBound="myRepeater_OnItemDataBound">
<HeaderTemplate>
<table width="99%" border="0" cellpadding="0" cellspacing="0">
<tr class="lgrey">
<td>Default</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<table>
<tr>
<td>
<asp:LinkButton ID="lnk1" Text="Make Default" CommandName="SetDefault" runat="server" Visible="True" CommandArgument='<%#Eval("UserID") %>' CausesValidation="false"></asp:LinkButton>
<asp:Label ID="label1" Text="Yes" runat="server" Visible="False"></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
我想要的是当用户点击任何一个时 转发器呈现的列表中的“lnk1”链接按钮, 链接应替换为标签“label1”.. 即,当用户点击“默认”链接时,应将其替换为“是”标签
调用此方法obj.SetDefaultAddress();
正在设置数据库中的默认地址。
问题是当转发器呈现时显示label1和lnk1 ......
正在发生的事情就是显示“Make Default”LinkButton和“YES”标签 在我的转发器内的表的“默认”列下。
我想要一些代码来检查我的数据库中的“IsDefault”值并显示“Make Default”链接按钮
和“YES”相应地标记...即如果IsDefault在DB中的值为TRUE,则应在转发器中显示“YES” 否则“默认”
答案 0 :(得分:2)
你确定在ItemCommand下面的代码片段正在执行吗? 我只是将CommandName从SetDefault更改为aspx文件中的SetDefaultAddress以匹配后面代码中的那个,它起作用了。
答案 1 :(得分:0)
从哪里开始...
我认为造成问题的原因是SelectedItem
和DefaultAddress
没有相互映射,因此当您点击按钮时,您将获得所选的索引集和{{1事件正在显示/隐藏您想要的内容,但是当从数据库初始化网格时,OnItemDatabound
未被设置。
我不知道你的数据源是什么,显然有更多的代码而不是你发布的代码,但是如果你可以查看SelectedItem
处理程序中的e.Item.DataItem
,你可以当地址为默认值(myRepeater_ItemDataBound
)
答案 2 :(得分:0)
我可能会从标记本身开始 - 这假设你的数据源中有bit / boolean类型的“IsDefault”列/属性,表明地址是默认的。所以使用以下标记:
...
<tr>
<td>
<asp:LinkButton ID="lnk1" Text="Make Default" CommandName="SetDefault" runat="server" Visible='<%# !Eval("IsDefault") %>' CommandArgument='<%#Eval("UserID") %>' CausesValidation="false"></asp:LinkButton>
<asp:Label ID="label1" Text="Yes" runat="server" Visible='<%# !Eval("IsDefault") %>'></asp:Label>
</td>
</tr>
...
您需要根据数据源中的属性控制可见性(使用标记或ItemDataBound事件)。此外,当单击SetDefault链接时,您必须重新绑定转发器新状态或显式切换可见性(正如您当前的代码所做的那样)。
编辑:
如果数据绑定表达式不起作用,则必须在ItemDataBound事件中执行此操作。我看到你已经尝试过,但有一个错误 - bllUsers obj=new bllUsers();
总是将IsDefault视为false - 你需要使用数据项。例如,
protected void myRepeater_ItemDataBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
bllUsers obj = e.Item.DataItem as bllUsers;
((Label)e.Item.FindControl("ldefault")).Visible = obj.isDefault;
((Button)e.Item.FindControl("btnMakeDefault")).Visible = ! obj.isDefault;
}
}