gridview中的澄清 [英] Clarification in gridview

查看:69
本文介绍了gridview中的澄清的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在gridview中的单列中有textfield和image按钮。当我点击图像按钮弹出窗口

窗口应该从poup窗口打开我需要选择项目,

然后该项目应该显示在textfield中。我怎么能实现这个目标。提前谢谢



示例图片:网址 http://postimg.org/ image / fmdvgr9zx /



我的代码:



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:

  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(); 
}
}

推荐答案

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();



}
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();

}


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[^]
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[^]


这篇关于gridview中的澄清的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆