Click here to Skip to main content
15,881,248 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Am having textfield and image button in single column in gridview. when i click the image button popup
window should open from the poup window i need to select item,
then the item should be displayed in textfield. How can i acheive this. thanks in advance

example image : URL http://postimg.org/image/fmdvgr9zx/

My code:

XML
  first Gridview

  <asp:GridView ID                ="gvAll" runat="server"
    AutoGenerateColumns           = "false" Font-Names = "Arial"
    Font-Size                     = "11pt" AlternatingRowStyle-BackColor = "#C2D69B"
    HeaderStyle-BackColor         = "green" AllowPaging ="true"
    OnPageIndexChanging           = "OnPaging" PageSize = "10" >
       <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:CheckBox ID      ="chkAll" runat="server" onclick = "checkAll(this);"
                    AutoPostBack          = "true"  OnCheckedChanged = "CheckBox_CheckChanged"/>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID      ="chk" runat="server" onclick = "Check_Click(this)"
                    AutoPostBack          = "true"  OnCheckedChanged = "CheckBox_CheckChanged" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField     = "ConId" HeaderText = "Customer ID"
             HtmlEncode                   = "false" />
            <asp:BoundField DataField     = "Name" HeaderText = "Contact Name"
            HtmlEncode                    = "false" />
            <asp:BoundField DataField     = "CompanyName" HeaderText = "City"
            HtmlEncode                    = "false" />
       </Columns>
   <AlternatingRowStyle BackColor ="#C2D69B"  />
</asp:GridView>


    Second GridView

<asp:GridView ID                  ="gvSelected" runat="server"
AutoGenerateColumns               = "false" Font-Names = "Arial"
Font-Size                         = "11pt" AlternatingRowStyle-BackColor = "#C2D69B"
HeaderStyle-BackColor             = "green" EmptyDataText = "No Records Selected"  >
<Columns>
    <asp:TemplateField HeaderText ="ID">
        <ItemTemplate>
            <asp:TextBox ID       ="txtid" runat="server" Text='<%#Eval("ConId") %>'></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText ="Name">
        <ItemTemplate>
            <asp:TextBox ID       ="txtid" runat="server" Text='<%#Eval("Name") %>'></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>


    <asp:TemplateField HeaderText ="Company">
        <ItemTemplate>
            <asp:TextBox ID       ="txtid" runat="server" Text='<%#Eval("CompanyName") %>'></asp:TextBox>
        </ItemTemplate>
    </asp:TemplateField>

 </Columns>
</asp:GridView>


 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindPrimaryGrid();
            BindSecondaryGrid();
        }
    }

    private void BindPrimaryGrid()
    {
        string constr = ConfigurationManager.ConnectionStrings["ConnectionDB"].ConnectionString;
        //string query = "select CustomerID, ContactName, City from customers";
        string query = "select ConId,Name,CompanyName from Contact";
        SqlConnection con = new SqlConnection(constr);
        SqlDataAdapter sda = new SqlDataAdapter(query, con);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        gvAll.DataSource = dt;
        gvAll.DataBind();  
    }

protected void OnPaging(object sender, GridViewPageEventArgs e)
{
    GetData();
    gvAll.PageIndex = e.NewPageIndex;
    BindPrimaryGrid();
    SetData(); 
}

private void GetData()
{
    DataTable dt;
    if (ViewState["SelectedRecords"] != null)
        dt = (DataTable)ViewState["SelectedRecords"];
    else
        dt = CreateDataTable();
    CheckBox chkAll = (CheckBox)gvAll.HeaderRow
                        .Cells[0].FindControl("chkAll");
    for (int i = 0; i < gvAll.Rows.Count; i++)
    {
        if (chkAll.Checked)
        {
            dt = AddRow(gvAll.Rows[i], dt);
        }
        else
        {
            CheckBox chk = (CheckBox)gvAll.Rows[i]
                            .Cells[0].FindControl("chk");
            if (chk.Checked)
            {
                dt = AddRow(gvAll.Rows[i], dt);
            }
            else
            {
                dt = RemoveRow(gvAll.Rows[i], dt);
            }
        }
    }
    ViewState["SelectedRecords"] = dt;
}

    private void SetData()
    {
        CheckBox chkAll = (CheckBox)gvAll.HeaderRow.Cells[0].FindControl("chkAll");
        chkAll.Checked = true;
        if (ViewState["SelectedRecords"] != null)
        {
            DataTable dt = (DataTable)ViewState["SelectedRecords"];
            for (int i = 0; i < gvAll.Rows.Count; i++)
            {
                CheckBox chk = (CheckBox)gvAll.Rows[i].Cells[0].FindControl("chk");
                if (chk != null)
                {
                    DataRow[] dr = dt.Select("ConId = '" + gvAll.Rows[i].Cells[1].Text + "'");
                    chk.Checked = dr.Length > 0; 
                    if (!chk.Checked)
                    {
                        chkAll.Checked = false;
                    }
                }
            }
        }
    }

private DataTable CreateDataTable()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ConId");
    dt.Columns.Add("Name");
    dt.Columns.Add("CompanyName");
    dt.AcceptChanges();
    return dt;
}

private DataTable AddRow(GridViewRow gvRow, DataTable dt)
{
    DataRow[] dr = dt.Select("ConId = '" + gvRow.Cells[1].Text + "'");
    if (dr.Length <= 0)
    {
        dt.Rows.Add();
        dt.Rows[dt.Rows.Count - 1]["ConId"] = gvRow.Cells[1].Text;
        dt.Rows[dt.Rows.Count - 1]["Name"] = gvRow.Cells[2].Text;
        dt.Rows[dt.Rows.Count - 1]["CompanyName"] = gvRow.Cells[3].Text;
        dt.AcceptChanges();
    }
    return dt;
}

private DataTable RemoveRow(GridViewRow gvRow, DataTable dt)
{
    DataRow[] dr = dt.Select("ConId = '" + gvRow.Cells[1].Text + "'");
    if (dr.Length > 0)
    {
        dt.Rows.Remove(dr[0]);
        dt.AcceptChanges();
    }
    return dt;
}

protected void CheckBox_CheckChanged(object sender, EventArgs e)
{
    GetData();
    SetData();
    BindSecondaryGrid();
}

private void BindSecondaryGrid()
{
    DataTable dt = (DataTable)ViewState["SelectedRecords"];
    gvSelected.DataSource = dt;
    gvSelected.DataBind(); 
}
}
Posted
Updated 25-Sep-15 21:56pm
v6
Comments
Member 12003400 25-Sep-15 5:13am    
Are you using ajax model pop up?
ashok 89 25-Sep-15 5:57am    
i have using popup:ModalPopupExtender

Define model popup exact after defining image button and textbox in gridview only.
Design popup and keep it in panel,E.g Panel1. Define one lable in this Panel only like this. asp:label id="Label1" runat="server" Text=""
Targetcontrolid=Imagebutton from gridview
Popupcontrolid=Panel1
CancelControlID="Label1"

Now on popup submit button click,
{

//Write your code to assign value
Modelpopup.Hide();

}
 
Share this answer
 
v2
when you press imagebutton you can show your modal, and store the entered item in one hidden field or viewstate object or directly into that particular textbox, since ModalPopUp control is available in same page you can maintain like that also, refer below link for your reference.

http://www.dotnetspider.com/resources/46217-ModalPopupExtender-with-Yes-No-options-without-postback.aspx[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900