Если вы используете Repeater или любой другой элемент управления, связанный с источником данных, я бы использовал событие ItemDataBound и установил бы эти значения для ваших элементов управления.
Если это был ваш основной HTML
<html>
<asp:Repeater id="repeater" runat="server" OnItemDataBound="repeater_ItemDatabound">
<ItemTemplate>
<span><%# DataBinder.Eval(Container.DataItem, "isScorm") %></span>
<span id="totalLessonsSpan" runat="server"><%# DataBinder.Eval(Container.DataItem, "totalLessons") %></span>
</ItemTemplate>
</asp:Repeater>
</html>
Я хотел бы иметь это в коде
protected void repeater_ItemDatabound(object sender, RepeaterItemEventArgs e)
{
DataRow row = e.Item.DataItem as DataRow;
if (row == null) { }
else
{
int isScorm = 0;
int.TryParse(Convert.ToString(row["isScorm"]), out isScorm);
if (isScorm > 0)
{
HtmlGenericControl totalLessonsSpan = e.Item.FindControl("totalLessonsSpan") as HtmlGenericControl;
totalLessonsSpan.Text = "100";
}
}
}
Вы, вероятно, не хотите перебирать данные и менять их там, а затем связываться, когда вы можете сделать это во время связывания.
С другой стороны, я ненавижу эту БД из-за моей потребности в целостности данных - это изменить ее в SQL-запросе с помощью операторов case.