Skip to content

Commit

Permalink
controls should have unique ids
Browse files Browse the repository at this point in the history
  • Loading branch information
handcraftsman committed Dec 10, 2013
1 parent 9803149 commit 2ed79ef
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 15 deletions.
3 changes: 2 additions & 1 deletion src/FluentWebControls/CommandColumn.cs
Expand Up @@ -80,14 +80,15 @@ string ICommandColumn.CssClass
get { return CssClass; }
}

public void Render(T item, HtmlTextWriter writer)
public void Render(T item, int rowIndex, HtmlTextWriter writer)
{
var control = _getControl(item, Text ?? String.Format("<img src='{0}' alt='{1}'/>", ImageUrl, Alt));
var cell = new TableCell
{
HorizontalAlign = Align.ToHorizontalAlign(),
CssClass = CssClass
};
control.ID += "_" + rowIndex;
cell.Controls.Add(control);
cell.RenderControl(writer);
}
Expand Down
22 changes: 11 additions & 11 deletions src/FluentWebControls/DataColumn.cs
Expand Up @@ -97,12 +97,12 @@ string IDataColumn.Prefix
get { return Prefix; }
}

public virtual void Render(T item, HtmlTextWriter writer)
public virtual void Render(T item, int rowIndex, HtmlTextWriter writer)
{
var cell = new TableCell
{
HorizontalAlign = Align.ToHorizontalAlign(),
Text = GetColumnWithInput(item),
Text = GetColumnWithInput(item, rowIndex),
CssClass = CssClass
};
cell.RenderControl(writer);
Expand All @@ -119,37 +119,37 @@ public void RenderHeader(HtmlTextWriter writer)
cell.RenderControl(writer);
}

private string GetColumnWithInput(T item)
private string GetColumnWithInput(T item, int rowIndex)
{
if (ColumnTextType == ColumnTextType.TextBox)
{
return new TextBoxData(GetColumnText(item)).WithId(GetId(item)).WithName(GetName(item)).CssClass(InputCssClass).ToString();
return new TextBoxData(GetColumnText(item)).WithId(GetId(item, rowIndex)).WithName(GetName(item)).CssClass(InputCssClass).ToString();
}
if (ColumnTextType == ColumnTextType.CheckBox)
{
return new CheckBoxData(bool.Parse(GetColumnText(item))).WithId(GetId(item)).WithName(GetName(item)).WithCssClass(InputCssClass).ToString();
return new CheckBoxData(bool.Parse(GetColumnText(item))).WithId(GetId(item, rowIndex)).WithName(GetName(item)).WithCssClass(InputCssClass).ToString();
}
if (ColumnTextType == ColumnTextType.Hidden)
{
return new HiddenData().WithId(GetId(item)).WithName(GetName(item)).WithValue(GetColumnText(item)).ToString();
return new HiddenData().WithId(GetId(item, rowIndex)).WithName(GetName(item)).WithValue(GetColumnText(item)).ToString();
}
if (ColumnTextType == ColumnTextType.Span)
{
return new SpanData(GetColumnText(item)).WithId(GetId(item)).WithName(GetName(item)).WithCssClass(InputCssClass).ToString();
return new SpanData(GetColumnText(item)).WithId(GetId(item, rowIndex)).WithName(GetName(item)).WithCssClass(InputCssClass).ToString();
}
return GetColumnText(item);
}

private string GetId(T item)
private string GetId(T item, int? rowIndex)
{
if (InputTextId != null)
{
return InputTextId;
return InputTextId + (rowIndex != null ? ("_" + rowIndex) : "");
}

if (GetItemId == null)
{
return InputTextId ?? ColumnName;
return ColumnName + (rowIndex != null ? ("_" + rowIndex) : "");
}
return Prefix.IsNullOrEmpty()
? String.Format("{0}_{1}", ColumnName, GetItemId(item))
Expand All @@ -158,7 +158,7 @@ private string GetId(T item)

private string GetName(T item)
{
return InputTextName ?? GetId(item);
return InputTextName ?? GetId(item, null);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/FluentWebControls/IHtmlColumn.cs
Expand Up @@ -14,7 +14,7 @@ namespace FluentWebControls
{
public interface IHtmlColumn<T>
{
void Render(T item, HtmlTextWriter writer);
void Render(T item, int rowIndex, HtmlTextWriter writer);
void RenderHeader(HtmlTextWriter writer);
}
}
6 changes: 4 additions & 2 deletions src/FluentWebControls/TableData.cs
Expand Up @@ -91,17 +91,19 @@ public override string ToString()
writer.Write("</thead>");

writer.Write("<tbody>");
var rowIndex = 0;
foreach (var item in _items)
{
var tableRow = new TableRow();
tableRow.RenderBeginTag(writer);
{
foreach (var column in _columns)
foreach(var column in _columns)
{
column.Render(item, writer);
column.Render(item, rowIndex, writer);
}
}
tableRow.RenderEndTag(writer);
rowIndex++;
}
writer.Write("</tbody>");
}
Expand Down

0 comments on commit 2ed79ef

Please sign in to comment.