+2006-07-17 Vladimir Krasnov <vladimirk@mainsoft.com>
+
+ * GridView: fixed DataKeyNames property, moved to ControlState
+ fixed PageCount property, initial PageCount ahould be zero
+ fixed SelectedDataKey, should throw exception if not initialized
+ fixed CreateColumns, wrong order of columns
+ fixed CreateControlStyle,
+ fixed InitializePager, no columnspan attrib on only one column
+ fixed LoadControlState, SaveControlState added DataKeyNames
+ fixed Render, RenderGrid should render within div tag
+ implemented GetPostBackOptions
+ * DataControlButton.cs: fixed Render, fixed style for img button
+
2006-07-17 Vladimir Krasnov <vladimirk@mainsoft.com>
* CheckBoxField.cs: fixed InitializeDataCell, tooltip only in edit
ControlStyle.AddAttributesToRender (writer);
- if (ButtonType == ButtonType.Link || ButtonType == ButtonType.Image)
- {
- if (ImageUrl.Length > 0) {
- writer.AddAttribute (HtmlTextWriterAttribute.Type, "image");
- writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
- if (callScript != null)
- writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
- else
- writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
- if (Text.Length > 0)
- writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
- writer.RenderBeginTag (HtmlTextWriterTag.Input);
- writer.RenderEndTag ();
- }
- else {
- if (callScript != null) {
- writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
- writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:");
- }
- else
- writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:" + postScript);
- writer.RenderBeginTag (HtmlTextWriterTag.A);
- writer.Write (Text);
- writer.RenderEndTag ();
+ if (ButtonType == ButtonType.Image) {
+ writer.AddAttribute (HtmlTextWriterAttribute.Type, "image");
+ writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
+ if (callScript != null)
+ writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+ else
+ writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
+ if (Text.Length > 0)
+ writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
+ writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+ writer.RenderBeginTag (HtmlTextWriterTag.Input);
+ writer.RenderEndTag ();
+ }
+ if (ButtonType == ButtonType.Link) {
+ if (callScript != null) {
+ writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+ writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:");
}
+ else
+ writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:" + postScript);
+ writer.RenderBeginTag (HtmlTextWriterTag.A);
+ writer.Write (Text);
+ writer.RenderEndTag ();
}
- else if (ButtonType == ButtonType.Button)
- {
+ if (ButtonType == ButtonType.Button) {
if (callScript != null)
writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
else
writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
-
+
writer.AddAttribute (HtmlTextWriterAttribute.Type, "submit");
writer.AddAttribute (HtmlTextWriterAttribute.Name, ClientID);
writer.AddAttribute (HtmlTextWriterAttribute.Value, Text);
writer.RenderBeginTag (HtmlTextWriterTag.Input);
writer.RenderEndTag ();
}
- } else {
+ }
+ else {
if (ImageUrl.Length > 0) {
ControlStyle.AddAttributesToRender (writer);
writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
if (Text.Length > 0)
writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
+ writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
writer.RenderBeginTag (HtmlTextWriterTag.Img);
writer.RenderEndTag ();
}
else {
if (!ControlStyle.IsEmpty) {
ControlStyle.AddAttributesToRender (writer);
- writer.RenderBeginTag (HtmlTextWriterTag.Span);
- writer.Write (Text);
- writer.RenderEndTag ();
- } else
- writer.Write (Text);
+ }
+ writer.RenderBeginTag (HtmlTextWriterTag.Span);
+ writer.Write (Text);
+ writer.RenderEndTag ();
}
}
}
DataControlFieldCollection columns;
PagerSettings pagerSettings;
+ TableStyle style;
TableItemStyle alternatingRowStyle;
TableItemStyle editRowStyle;
TableItemStyle emptyDataRowStyle;
DataKeyArray keys;
DataKey oldEditValues;
AutoGeneratedFieldProperties[] autoFieldProperties;
+ string [] dataKeyNames = null;
readonly string[] emptyKeys = new string[0];
private static readonly object PageIndexChangedEvent = new object();
// Control state
int pageIndex;
- int pageCount = -1;
+ int pageCount = 0;
int selectedIndex = -1;
int editIndex = -1;
SortDirection sortDirection = SortDirection.Ascending;
- string sortExpression;
+ string sortExpression = string.Empty;
public GridView ()
{
public virtual string[] DataKeyNames
{
get {
- object o = ViewState ["DataKeyNames"];
- if (o != null) return (string[]) o;
+ if (dataKeyNames != null)
+ return dataKeyNames;
return emptyKeys;
}
set {
- ViewState ["DataKeyNames"] = value;
+ dataKeyNames = value;
RequireBinding ();
}
}
[DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
public virtual int PageCount {
get {
- if (pageCount != -1) return pageCount;
+ if (pageCount != 0) return pageCount;
EnsureDataBound ();
return pageCount;
}
[DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Hidden)]
public virtual DataKey SelectedDataKey {
get {
+ if (DataKeys == null)
+ throw new InvalidOperationException ("DataKeys");
+
if (selectedIndex >= 0 && selectedIndex < DataKeys.Count) {
return DataKeys [selectedIndex];
} else
protected virtual ICollection CreateColumns (PagedDataSource dataSource, bool useDataSource)
{
ArrayList fields = new ArrayList ();
+ fields.AddRange (Columns);
if (AutoGenerateEditButton || AutoGenerateDeleteButton || AutoGenerateSelectButton) {
CommandField field = new CommandField ();
}
}
- fields.AddRange (Columns);
-
return fields;
}
[MonoTODO]
protected override Style CreateControlStyle ()
{
- return base.CreateControlStyle ();
+ style = new TableStyle (ViewState);
+ style.GridLines = GridLines.Both;
+ style.CellSpacing = 0;
+ return style;
}
DataControlRowState GetRowState (int index)
protected virtual void InitializePager (GridViewRow row, int columnSpan, PagedDataSource dataSource)
{
TableCell cell = new TableCell ();
- cell.ColumnSpan = columnSpan;
+ if (columnSpan > 1)
+ cell.ColumnSpan = columnSpan;
if (pagerTemplate != null)
pagerTemplate.InstantiateIn (cell);
editIndex = (int) state[4];
sortExpression = (string) state[5];
sortDirection = (SortDirection) state[6];
+ DataKeyNames = (string []) state [7];
}
protected internal override object SaveControlState ()
{
object bstate = base.SaveControlState ();
return new object[] {
- bstate, pageIndex, pageCount, selectedIndex, editIndex, sortExpression, sortDirection
+ bstate, pageIndex, pageCount, selectedIndex, editIndex, sortExpression, sortDirection, DataKeyNames
};
}
{
if (EnableSortingAndPagingCallbacks)
base.RenderBeginTag (writer);
+ else
+ writer.RenderBeginTag (HtmlTextWriterTag.Div);
RenderGrid (writer);
if (EnableSortingAndPagingCallbacks)
base.RenderEndTag (writer);
+ else
+ writer.RenderEndTag ();
}
void RenderGrid (HtmlTextWriter writer)
{
- switch (GridLines) {
- case GridLines.Horizontal:
- writer.AddAttribute (HtmlTextWriterAttribute.Rules, "rows");
- writer.AddAttribute (HtmlTextWriterAttribute.Border, "1");
- break;
- case GridLines.Vertical:
- writer.AddAttribute (HtmlTextWriterAttribute.Rules, "cols");
- writer.AddAttribute (HtmlTextWriterAttribute.Border, "1");
- break;
- case GridLines.Both:
- writer.AddAttribute (HtmlTextWriterAttribute.Rules, "all");
- writer.AddAttribute (HtmlTextWriterAttribute.Border, "1");
- break;
- default:
- writer.AddAttribute (HtmlTextWriterAttribute.Border, "0");
- break;
- }
-
- writer.AddAttribute (HtmlTextWriterAttribute.Cellspacing, "0");
- writer.AddStyleAttribute (HtmlTextWriterStyle.BorderCollapse, "collapse");
+ if (table == null)
+ return;
+
+ table.GridLines = GridLines;
table.RenderBeginTag (writer);
foreach (GridViewRow row in table.Rows)
[MonoTODO]
PostBackOptions IPostBackContainer.GetPostBackOptions (IButtonControl control)
{
- throw new NotImplementedException ();
+ PostBackOptions pbo = new PostBackOptions (this, control.CommandName + "$" + control.CommandArgument);
+ return pbo;
}
}
}