Bind Gridview to another control

Last post 01-25-2008 2:39 PM by chip_munk. 3 replies.

Sort Posts:

  • Bind Gridview to another control

    01-24-2008, 2:19 AM
    • Loading...
    • chip_munk
    • Joined on 12-12-2007, 5:40 AM
    • Posts 17

     Hi guys,

     I want to bind my gridview to another button control. The scenario is when a user enters an 'ID' into the textbox and click on button 'Submit', the data will be displayed in the gridview. The user should be able to edit the information or add a new row. How do I go about doing this?
    For now, my gridview isn't linked to the button control.

    Here's my code:

    <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        <input type="hidden" id="hdnStdNo" runat="server" />

    <asp:GridView ID="GridView1" runat="server" GridLines="Both" DataSourceID="SqlDataSource1" DataKeyNames="ID" 
                        AutoGenerateColumns="false" AllowSorting="true" AllowPaging="true" AutoGenerateEditButton="true" 
                        ShowFooter="true" EditRowStyle-Wrap="true"  >
                        <Columns> 
                        <asp:TemplateField>
                        </asp:TemplateField>
                            <asp:BoundField ReadOnly="true" HeaderText="ID"  DataField="ID" SortExpression="ID" />
                            <asp:BoundField HeaderText="X_coordinate" DataField="X_coord" SortExpression="X_coord" />
                            <asp:BoundField HeaderText="Y_coordinate" DataField="Y_coord" SortExpression="Y_coord" />
                            <asp:BoundField HeaderText="Ref Seq No." DataField="RefSeq" SortExpression="RefSeq" />
                            <asp:BoundField HeaderText="Description" DataField="Description" SortExpression="Description" />
       
                            <asp:TemplateField>
                                    <ItemTemplate>
                                    <asp:Label ID="AccessNumberID" runat="server"><%# Eval("ID") %></asp:Label></ItemTemplate>
                                    <FooterTemplate>
                                    <asp:TextBox ID="AccessIDText" runat="server"></asp:TextBox></FooterTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                    <asp:Label ID="X_point" runat="server"><%# Eval("X_coord") %></asp:Label></ItemTemplate>
                                    <FooterTemplate>
                                    <asp:TextBox ID="X_pointText" runat="server"></asp:TextBox></FooterTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                    <asp:Label ID="Y_point" runat="server"><%# Eval("Y_coord") %></asp:Label></ItemTemplate>
                                    <FooterTemplate>
                                    <asp:TextBox ID="Y_pointText" runat="server"></asp:TextBox></FooterTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                    <asp:Label ID="RefSequence" runat="server"><%# Eval("RefSeq") %></asp:Label></ItemTemplate>
                                    <FooterTemplate>
                                    <asp:TextBox ID="RefSeqText" runat="server"></asp:TextBox></FooterTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                    <asp:Label ID="Desc" runat="server"><%# Eval("Description") %></asp:Label></ItemTemplate>
                                    <FooterTemplate>
                                    <asp:TextBox ID="DescText" runat="server"></asp:TextBox></FooterTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField>
                                    <FooterTemplate> 
                                    <asp:Button ID="Button2" runat="server" Text="Add" OnClick="AddNew_Click"/>
                                    </FooterTemplate>      
                                </asp:TemplateField>
                            </Columns>
                            </asp:GridView>

    Code-behind:

        //add new row to gridview 

        protected void AddNew_Click(object sender, EventArgs e)
        {
            TextBox AccessNumID = GridView1.FooterRow.FindControl("AccessIDText") as TextBox;
            TextBox Xpoint = GridView1.FooterRow.FindControl("X_pointText") as TextBox ;
            TextBox Ypoint = GridView1.FooterRow.FindControl("Y_pointText") as TextBox;
            TextBox RefSeqNum = GridView1.FooterRow.FindControl("RefSeqText") as TextBox;
            TextBox DescExp = GridView1.FooterRow.FindControl("DescText") as TextBox;
    
            SqlDataSource2.InsertParameters["ID"].DefaultValue = AccessNumID.Text;
            SqlDataSource2.InsertParameters["X_coord"].DefaultValue = Xpoint.Text;
            SqlDataSource2.InsertParameters["Y_coord"].DefaultValue = Ypoint.Text;
            SqlDataSource2.InsertParameters["RefSeq"].DefaultValue = RefSeqNum.Text;
            SqlDataSource2.InsertParameters["Description"].DefaultValue = DescExp.Text;
            SqlDataSource2.Insert();
        }

    / / submit button control

    protected void ButtonSubmit_Click(object sender, EventArgs e)
        {
            string connString = @"server = erl-ws32\sqlexpress;database=Sample_gene;Integrated Security=True";
            SqlConnection sqlconn = new SqlConnection(connString);
            sqlconn.Open();

            ??? What should i code here?

        }
     

  • Re: Bind Gridview to another control

    01-24-2008, 3:48 AM
    • Loading...
    • impathan
    • Joined on 07-12-2007, 10:12 AM
    • Ahmedabad
    • Posts 787

     You have to bind gridview using sql command so remove DataSourceID.
    On Button event,Connect to the sql server and retrive data from the database and bind Gridview
    protected void ButtonSubmit_Click(object sender, EventArgs e)
        {
            string connString = @"server = erl-ws32\sqlexpress;database=Sample_gene;Integrated Security=True";
            SqlConnection sqlconn = new SqlConnection(connString);
          SqlCommand cmd as new SqlCommand("select * from tblname where id=....",sqlconn);
          SqlDataAdapter adp=new SqlDataAdapter(cmd);
          DataSet ds=new DataSet();
          adp.fill(ds);
          GridView1.DataSource=ds;
          GridView1.DataBind();
       }

       For editing record,you can use RowEditing event of gridview,
       On RowEditing event,
       GridView1.EditIndex=e.NewEditIndex;
       GridView1.DataBind();

       For Adding new record.
        protected void AddNew_Click(object sender, EventArgs e)
        {
            TextBox AccessNumID = GridView1.FooterRow.FindControl("AccessIDText") as TextBox;
            TextBox Xpoint = GridView1.FooterRow.FindControl("X_pointText") as TextBox ;
            TextBox Ypoint = GridView1.FooterRow.FindControl("Y_pointText") as TextBox;
            TextBox RefSeqNum = GridView1.FooterRow.FindControl("RefSeqText") as TextBox;
            TextBox DescExp = GridView1.FooterRow.FindControl("DescText") as TextBox;
            string connString = @"server = erl-ws32\sqlexpress;database=Sample_gene;Integrated Security=True";
            SqlConnection sqlconn = new SqlConnection(connString);
            sqlconn.Open();
            SqlCommand cmd as new SqlCommand("Write Insert Query here.",sqlconn);
            cmd.ExecuteNonQuery();
            sqlconn.Close();
          
        }

    Click on 'Mark as Answer' if this post is helpful.

    ImranKhan pathan
  • Re: Bind Gridview to another control

    01-25-2008, 2:14 PM
    • Loading...
    • chip_munk
    • Joined on 12-12-2007, 5:40 AM
    • Posts 17

    I managed to get the gridview working with my button click event. However, another problem arises with the Update.

    I get this error message when I clicked to Update:

    'Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.WebControls.TextBox'. 

     

    Here's my code:
     

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
    int col1;
    int col2;
    String col3;
    String col4;

    //retrieve Primary Key
    GridViewRow row = GridView1.Rows[e.RowIndex];
    int catID = Int32.Parse((row.FindControl("AccessID") as Literal).Text);

    TextBox update_col1;
    Error Message points to line below!
    update_col1 = (TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0];
    col1 = int.Parse(update_col1.Text);

    TextBox update_col2;
    update_col2 = (TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0];
    col2 = int.Parse(update_col2.Text);

    TextBox update_col3;
    update_col3 = (TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0];
    col3 = update_col3.Text;

    TextBox update_col4;
    update_col4 = (TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0];
    col4 = update_col4.Text;

    string connString = @"server = erl-ws32\sqlexpress;database=Sample_gene;Integrated Security=True";
    SqlConnection sqlconn = new SqlConnection(connString);
    sqlconn.Open();
    SqlCommand cmd = new SqlCommand("UPDATE [AccessNumber] SET [X_coord]=@X_coord, [Y_coord]=@Y_coord, [RefSeq]=@RefSeq, [Description]=@Description WHERE [ID] = @ID", sqlconn);

    cmd.Parameters.AddWithValue("@X_coord", col1);
    cmd.Parameters.AddWithValue("@Y_coord", col2);
    cmd.Parameters.AddWithValue("@RefSeq", col3);
    cmd.Parameters.AddWithValue("@Description", col3);
    cmd.Parameters.AddWithValue("@ID", catID);
    cmd.ExecuteNonQuery();
    sqlconn.Close();

    GridView1.EditIndex = -1;
    BindData();
    }
      
    <asp:GridView ID="GridView1" runat="server" GridLines="Both" OnRowEditing="GridView1_RowEditing"  OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating" 
    DataKeyNames="ID" AutoGenerateColumns="false" AllowSorting="true" AllowPaging="true" AutoGenerateEditButton="true"
    ShowFooter="true" EditRowStyle-Wrap="true" >
    <Columns>
    <asp:TemplateField HeaderText="ID" >
    <ItemTemplate>
    <asp:Literal ID="AccessID" runat="server" Text='<%# Eval("ID") %>'></asp:Literal>
    </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="X_coordinate">
    <ItemTemplate>
    <asp:Literal ID="Xcoord" runat="server" Text='<%# Eval("X_coord") %>'></asp:Literal>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="txtX" runat="server" Text='<%# Eval("X_coord") %>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Y_coordinate">
    <ItemTemplate>
    <asp:Literal ID="Ycoord" runat="server" Text='<%# Eval("Y_coord") %>'></asp:Literal>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="txtY" runat="server" Text='<%# Eval("Y_coord") %>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Ref Seq No.">
    <ItemTemplate>
    <asp:Literal ID="RefNo" runat="server" Text='<%# Eval("RefSeq") %>'></asp:Literal>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="txtRef" runat="server" Text='<%# Eval("RefSeq") %>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Description">
    <ItemTemplate>
    <asp:Literal ID="DescTxt" runat="server" Text='<%# Eval("Description") %>'></asp:Literal>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="txtDes" runat="server" Text='<%# Eval("Description") %>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>
     Please help to rectify the mistake. Thanks.
     
  • Re: Bind Gridview to another control

    01-25-2008, 2:39 PM
    Answer
    • Loading...
    • chip_munk
    • Joined on 12-12-2007, 5:40 AM
    • Posts 17

     I managed to find the bug. Thanks.

    Here's the correct code where the error appears:

    String update_col1 = (row.FindControl("txtX") as TextBox).Text;
    col1 = int.Parse(update_col1);

    I should reference to the TextBox ID not the Literal ID.

     
Page 1 of 1 (4 items)
Microsoft Communities
Page view counter