c# - The server tag is not well formed. html runat="server" and data-target="#<% Eval("Abbreviation")%>"
问题描述
I have to generate checkboxes, which i have to check when a button is clicked. When the checkbox is clicked it needs to use the "data-target" to uncollapse some code.
I need both the collapse and getting if its checked.
Problems: the runat="server" and data-targer="#<%# Eval("Abbreviation")%>" gets my compiler saying "The server tag is not well formed".
When i try to get the "chk.checked" on serveside it says it doesn't know it since i can't have runat="server" if i have the data-target.
Here is the html code for the repeater.
<asp:Repeater ID="ferryRepeater" runat="server">
<ItemTemplate>
<div id="div1" runat="server">
<input id="chkFerry" type="checkbox" data-toggle="collapse" runat="server" data-target="#<%# Eval("Abbreviation")%>" />
<!--data-target="#<%# Eval("Abbreviation")%>" -->
<label id="label1" for="chk1"><%# Eval("SubcontractorName") %></label>
<div id="<%# Eval("Abbreviation") %>" class="collapse obligatorisk">
<dl>
<dt id="toFrom1"></dt>
<dd>
<p id="text1"><%# Eval("DialogueText") %></p>
</dd>
</dl>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
Here is the backend code for checking the checkboxes.
private List<string> CheckFerryCheckbox()
{
List<string> ferryList = new List<string>();
foreach (RepeaterItem item in ferryRepeater.Items)
{
CheckBox chk = (CheckBox)item.FindControl("chkFerry");
if (chk.Checked)
{
Label ferry = (Label)item.FindControl("label1");
ferryList.Add(ferry.Text);
}
}
return ferryList;
}
Here is where i Binding with the repeater.
private void BindRepeaterData()
{
string sqlString = @"SELECT sc.SubcontractorName, dt.DialogueText, sc.Abbreviation FROM dbo.Subcontractor sc LEFT OUTER JOIN dbo.DialogueText dt ON sc.DialogueId = dt.DialogueId WHERE sc.Active = 1 AND sc.Type = 'Færge' ORDER BY sc.SubcontractorName";
SqlCommand cmd = new SqlCommand(sqlString, conn);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
ferryRepeater.DataSource = ds;
ferryRepeater.DataBind();
}
I have tried to change Data-target to data-target='#<%# Eval("Abbreviation")%>' and have runat="server", but then it doesn't generate the Eval.
Sorry if this is not that well explained. It is my first post here, so please be gentle.
解决方案
请尝试以下操作:注意String.Format
data-target 方法的使用:
<asp:Repeater ID="ferryRepeater" runat="server">
<ItemTemplate>
<div id="div1" runat="server">
<input id="chkFerry" type="checkbox" data-toggle="collapse" runat="server" data-target='<%# String.Format("#{0}", Eval("Abbreviation"))%>' />
<label id="label1" for="chk1"><%# Eval("SubcontractorName") %></label>
<div id="<%# Eval("Abbreviation") %>" class="collapse obligatorisk">
<dl>
<dt id="toFrom1"></dt>
<dd>
<p id="text1"><%# Eval("DialogueText") %></p>
</dd>
</dl>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
推荐阅读
- php - 四项回显后如何新建一列?
- sql-server - Azure 数据工厂中 Azure-SSIS 集成运行时的 SQL Server 许可证
- javascript - 返回内部还是外部?
- java - 仅在 androidTest 上:仅从 Android O 开始支持 Invoke-customs
- python - 定义一个函数,将不同美国硬币的数量作为参数,并打印出所需的最简单的纸币和硬币数量
- solr - 如何从 Solr 的标准分词器中删除字符?
- mongodb - 聚合函数增强以包含多个没有 _id 字段的字段
- sql - 查询以找到最佳匹配
- aframe - 有没有关于在没有 cloneNode() 的情况下在 A-Frame 上重新做父母的解决方案?
- javascript - 将脚本标签导入反应应用程序(未定义)