Site Search

Monday, July 4, 2011

How to Add Gridview Header columns Vertically not Horizontally/How to add GridView Rows Vertically

This is scenario that many people stuck with so I did some investigation and finally came a good standard MSDN specified solution. So please take the advantage of it. Have nice cording ;)


Step 01
Add a gridview in to your aspx.(With no Columns)

 <asp:GridView ID="GridView" runat="server" BorderWidth="0px"                            Width="100%" ShowHeader="False">
</asp:GridView>

Style it as you want.

Step 02
Code behind.Bind the data.

        private void PopulateGridView()
        {
            GridView.DataSource = GetData();
            GridView.DataBind();
        }
        private DataTable GetData()
        {

            DataTable table = new DataTable();
            table.Columns.Add(GridColumnName, typeof(string));
            table.Columns.Add(GridColumnEmail, typeof(string));
            table.Rows.Add("Asaj saii", "asag@IBM.com");

          GridFormatter gridformatter = new GridFormatter();
            DataTable datatable = gridformatter.FormatDataTable();

            gridformatter.AddDataRow(Localization.GetString("Name", this.LocalResourceFile), table.Rows[0][0].ToString(), datatable);
            gridformatter.AddDataRow(Localization.GetString("Email", this.LocalResourceFile), table.Rows[0][1].ToString(), datatable);

            return datatable;
        }





public class GridFormatter

    {

        public DataTable FormatDataTable()
        {
            DataTable datatable = new DataTable();

            datatable.Columns.Add("Description", System.Type.GetType("System.String"));
            datatable.Columns.Add("Value", System.Type.GetType("System.String"));
            return datatable;
        }
        public void AddDataRow(string description, string value, DataTable dt)
        {
            DataRow datarow;
            datarow = dt.NewRow();
            datarow["Description"] = description;
            datarow["Value"] = value;
            dt.Rows.Add(datarow);
           

        }
    }

Step 03
Test it.Cheers!


Friday, July 1, 2011

How to add grid view columns by code behind/Add columns by programmatically/Add columns by server side

This code snippet show you how to add grid view columns by programmatically but nor actually by the design.
ASPX
<asp:GridView ID="Grid" runat="server" Width="100%" AutoGenerateColumns="False" OnInit="Grid_Init">

<HeaderStyle CssClass="spn_gridheader" />
<RowStyle CssClass="spn_gridrow" />                                  
<PagerStyle  HorizontalAlign="Right" ForeColor="#009900" VerticalAlign="Middle" />

</asp:GridView>

ASPX.CS
At grid view initialization,
protected void Grid_Init(object sender, EventArgs e)
        {
            Grid.AutoGenerateColumns = false;
            Grid.HeaderStyle.HorizontalAlign = HorizontalAlign.Right;

            BoundField date = CreateBoundField("Date","Header name","format"}");
            BoundField month = CreateBoundField("Month","Header name","format"}");
            BoundField year = CreateBoundField("Year","Header name","format"}");
             
              //Styling header columns
            date.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
            month.ItemStyle.HorizontalAlign = HorizontalAlign.Left;
            year.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
                       
            Grid.Columns.Add(date);
            Grid.Columns.Add(activity);
            Grid.Columns.Add(paid);

           
        }





        private static BoundField CreateBoundField(string dataField, string header, string dataFormatString)
        {
            BoundField field = new BoundField();
            field.DataField = dataField;
            field.HeaderText = header;
            if (!dataFormatString.Equals(""))
            {
                field.DataFormatString = dataFormatString;
            }
            field.SortExpression = dataField;
            field.HtmlEncode = false;
            return field;
        }





Addition:
You can add image column also if you want by using the Grid_RowDataBound event.
protected void GridViewRowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton Button = new ImageButton();
                Button.ID = "actionNoteButton";

                    Button.ImageUrl = ResolveUrl("imagepath.jpg");
                    e.Row.Cells[column index].Controls.Add(Button);
            }

        }
cheers!