在按钮单击上编辑gridview外部的所有gridview行 [英] edit all rows of gridview on button click which is outside gridview

查看:79
本文介绍了在按钮单击上编辑gridview外部的所有gridview行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的页面中有一个编辑按钮。



点击编辑按钮我希望网格视图中的所有可编辑行都可见(在编辑模式下) )



我的gridview是在aspx页面上的web用户控件和按钮。

I have a edit button in my page.

on click of the edit button i want to make all the editable rows in my gridview visible(in edit mode)

My gridview is in a web user control and button on an aspx page.

<asp:Gridview ID="GridView1" runat="server" AutoGenerateColumns="False" >
   <columns>
        <asp:TemplateField HeaderText="Id">            
            <itemtemplate>
                <asp:LinkButton ID="lnkId" runat="server" onclick="lnkId_Click" Text='<%# Eval("Id") %>' >                
            </itemtemplate>        
        <asp:TemplateField HeaderText="Name">
            <edititemtemplate>
                <asp:TextBox ID="txtEditName"  runat="server" Text='<%# Bind("Name") %>'>
            </edititemtemplate>
            <itemtemplate>
                <asp:Label ID="lblName"  runat="server" Text='<%# Bind("Name") %>'>
            </itemtemplate>        
    </columns>
<asp:Button id="Button1" runat="server"  text"edit" onclick="Button1_click"/>







谢谢和问候



Sourav




Thanks and Regards

Sourav

推荐答案

你需要为每个循环你的gridview一行。



类似



You would need to loop for each row of your gridview.

Something like

For i = 0 To gridview.rows.count - 1
gridview.row(i).cell(0).Text = "Text of row: " i.ToString() & " and cell 0."
Next





希望这会有所帮助,

Bert



Hope this helped,
Bert


建议在javascript中执行此操作。 Javascript是更好的性能,因为任务是在客户端浏览器上执行的。



但是,如果您仍想在服务器端执行此操作,下面将给您一个想法:

ASP.NET页面代码:

It is recommended to do this in javascript. Javascript is far more better performance as the task is carried out at client browser.

However, if you still want to do it at server side, below will give you an idea:
ASP.NET page code:
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="False" xmlns:asp="#unknown">
    <columns>
        <asp:boundfield datafield="name" headertext="Name" />
        <asp:boundfield datafield="tel" headertext="Tel" />
    </columns>

</asp:gridview>

<br />

<asp:button id="Button_Edit" runat="server" onclick="Button_Edit_Click" xmlns:asp="#unknown">
    Text="Edit" /></asp:button>



C#代码落后:


C# Code behind:

public partial class WebForm1 : System.Web.UI.Page
{
    System.Data.DataTable dt
    {
        get
        {
            return (System.Data.DataTable)ViewState["dt"];
        }
        set
        {
            ViewState["dt"] = value;
        }
    }

    bool isEditMode
    {
        get
        {
            if (ViewState["isEditMode"] == null)
                return false;
            return (bool)ViewState["isEditMode"];
        }
        set
        {
            ViewState["isEditMode"] = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            dt = new System.Data.DataTable();
            dt.Columns.Add("name");
            dt.Columns.Add("tel");
            dt.Rows.Add("Thomas", "1111");
            dt.Rows.Add("Jessie", "2222");
            dt.Rows.Add("Parker", "3333");
            BindData();
            isEditMode = false;
        }

        if (isEditMode)
            AddTextBox();
    }

    void BindData()
    {
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

    void AddTextBox()
    {
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                GridView1.Rows[i].Cells[j].Controls.Add(new TextBox());
            }
        }
    }

    void LoadDataIntoTextbox()
    {
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                ((TextBox)GridView1.Rows[i].Cells[j].Controls[0]).Text = dt.Rows[i][j] + "";
            }
        }
    }

    void SaveData()
    {
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                dt.Rows[i][j] = ((TextBox)GridView1.Rows[i].Cells[j].Controls[0]).Text;
            }
        }

        BindData();
    }

    protected void Button_Edit_Click(object sender, EventArgs e)
    {
        isEditMode = !isEditMode;
        if (isEditMode)
        {
            Button_Edit.Text = "Save";
            AddTextBox();
            LoadDataIntoTextbox();
        }
        else
        {
            Button_Edit.Text = "Edit";
            SaveData();
        }
    }
}


感谢adriancs ...



i理解逻辑..我在我的文本框和标签中使用isEditMode检查并执行隐藏和显示设置可见性



thanks adriancs...

i understood the logic..i have used the isEditMode in my textbox and label to check and perform hide and show setting the visibility

<asp:templatefield headertext="Name" xmlns:asp="#unknown">
          <itemtemplate>
               <asp:textbox id="txtEditName" visible="<%# IsInEditMode %>" runat="server" text="<%# Bind("Name") %>"></asp:textbox>


               <asp:label id="lblName" visible="<%# !(bool) IsInEditMode %>" runat="server" text="<%# Bind("Name") %>"></asp:label>
           </itemtemplate>
           </asp:templatefield>







并点击保存按钮从我的文本框中获取更新值






and getting the updated value from my textbox like this on click of save button

protected void btnEdit_Click(object sender, EventArgs e)
        {
            IsInEditMode = true;
            BindGrid();
           
        }
 protected void btnSave_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in GridView1.Rows)
            {
                string name = ((TextBox)row.FindControl("txtEditName")).Text;
            }
        }


这篇关于在按钮单击上编辑gridview外部的所有gridview行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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