GridView 只修改一个字段

时间:2022-03-11 13:19:31
 我只想修改一个字段 状态字段。
由于字段多 但是我的其他字段 如果 隐藏 就取值不了 。 请问用什么方法 把不显示的字段隐藏 又可以修改保存原来的数据
  protected void gvFiles_RowUpdating(object sender, GridViewUpdateEventArgs e)
    { Tb_file sad=new Tb_file ();

        string id = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[0].Controls[0]).Text.ToString().Trim();
        string name = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString().Trim();
        string sex = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString().Trim();
        string age = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString().Trim();
        string department = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString().Trim();
        string grade = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[5].Controls[0]).Text.ToString().Trim();
         string xingm = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[6].Controls[0]).Text.ToString().Trim();
         DropDownList dropShowType = (DropDownList)gvFiles.Rows[Convert.ToInt32(e.RowIndex)].Cells[7].FindControl("DropDownList1");
         string zhaungt = dropShowType.SelectedValue;
         //string zhaungt = ((DropDownList)gvFiles.Rows[e.RowIndex].Cells[7].Controls[0]).SelectedItem.Text.ToString().Trim();
         string zhenshi = ((TextBox)gvFiles.Rows[e.RowIndex].Cells[8].Controls[0]).Text.ToString().Trim();
         sad.FileID = int.Parse(id.ToString());
        sad.FileName = name.ToString();//文件名称
        sad.Areaname = sex;
        sad.Cityname = age;
        sad.Provincename = department;
        sad.Uptime = grade;
        sad.Unitname = xingm;
        sad.Verifying = zhaungt;
        sad.FileTrueName = zhenshi.ToString();//真实文件名称

       
            int i = Tb_fileManager.Instance.ModifyTb_file(sad); //x修改方法

21 个解决方案

#1


我觉得 是不是可以 获取 那个列的值 就好了

#2


你要修改哪个列 在GridView的那个方法里面就获取这个列的值和ID值修改就好了嘛。。。

#3


前台
<asp:GridView ID="GridView1" runat="server">
<asp:TemplateField HeaderText="操作">
                                    <ItemTemplate>
 <asp:LinkButton ID="LinkButton1" runat="server" Text="修改你的那个字段" CommandName="set_top" CommandArgument='<%#Eval("id") %>'></asp:LinkButton>
 </ItemTemplate>
                                </asp:TemplateField>                       
                        </asp:GridView>

后台
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Int32 id = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "set_top")
        {
           string sql = "update news set istop=1 where id=" + id;//写修改字段的sql语句
        }
try
        {
            DataBase.Runsql(sql);//执行修改sql语句
        }
        catch
        {
            PageAbout.ShowMsg("操作失败!");
        }
}
这样就OK了,还看不懂的话加QQ694903456
     

#4


前台GridView1里面还得加上这个
OnRowCommand="GridView1_RowCommand"

#5


引用 2 楼 zhumingtiancai 的回复:
你要修改哪个列 在GridView的那个方法里面就获取这个列的值和ID值修改就好了嘛。。。

 我现在是可以修改的  现在问题是 我想把一个字段不显示  隐藏 但是我要取到他的值

#6


影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex]FindControl("控件ID")).Text.ToString().Trim();

#7


引用 6 楼 wx8849 的回复:
影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex]FindControl("控件ID")).Text.ToString().Trim();

获取不了

#8


比如你最后一列有个"修改"按钮,那么可以在该列放一个隐藏域控件

<asp:Hidden id="xxx" runat="server"  value='<%# Bind("字段名称")%>'/>

在后台获取就可以了

#9


引用 7 楼 yankai159357 的回复:
引用 6 楼 wx8849 的回复:
影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex].FindControl("控件ID")).Text.ToString().Trim();

获取不了

少个点,而且必须是模版列

#10


HiddenField   隐藏域传值  
 FindControl 找隐藏域的ID

#11


<asp:Hidden id="xxx" runat="server" value='<%# Bind("字段名称")%>'/>

#12


引用 9 楼 wx8849 的回复:
引用 7 楼 yankai159357 的回复:
引用 6 楼 wx8849 的回复:
影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex].FindControl("控件ID")).Text.ToString().Trim();

获取不了

少个点,而且必须是模版列
  点我加上了的  但是还是取不了

#13


用模板列 里面绑定 textbox 或lable 

然后再代码中用 gridview1.rows[i].FindControl("控件Id") 看能不能获取到值 

#14


只想修改一个字段,那把不想修改的在gridview里面设为只读的,那样就只能修改一个字段了。

#15



后台
((TextBox)gv_Box.Rows[e.RowIndex].FindControl("lbl_ItemType") as TextBox).Text.Trim()

前台
<ItemTemplate>
                                        <asp:Label ID="lbl_ItemType" runat="server" Text='<%# Eval("Remark") %>' Visible="false"></asp:Label>
                                    </ItemTemplate>

#16


引用楼主 yankai159357 的回复:
我只想修改一个字段 状态字段。
由于字段多 但是我的其他字段 如果 隐藏 就取值不了

同意#13楼。将你不需要修改的字段变为模板列,然后在其EditTemplate模板中的东西,用ItemTemplate模板中的东西复制过来,它就是只读的了。

#17


引用 15 楼 wx8849 的回复:
C# code

后台
((Label )gv_Box.Rows[e.RowIndex].FindControl("lbl_ItemType") as Label ).Text.Trim()

前台
<ItemTemplate>
                                        <asp:Label ID="lbl_ItemType" runat="……

#18


你是用什么方式隐藏的,visible?这样是无法取值的。

1、protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e) 
        { 
                //用CSS   隐藏列     
                e.Row.Cells[3].Style.Add( "display ",   "none ") 
                for   (int   i   =   16;   i   <=   28;   i++) 
                { 
                        e.Row.Cells[i].Style.Add( "display ",   "none "); 
                } 
        }
2、设计中添加绑定列时钩上“不可见”复选框 
3、width=0
4、建立css样式,内容是display:none.然后给需要隐藏的列的,head,item都加上这个样式

#19


另外即使不使用模板列,GridView的列定义上也应该一个ReadOnly属性吧?!

#20


添加一列为id,把Visible设为false

#21


这论坛真活跃

#1


我觉得 是不是可以 获取 那个列的值 就好了

#2


你要修改哪个列 在GridView的那个方法里面就获取这个列的值和ID值修改就好了嘛。。。

#3


前台
<asp:GridView ID="GridView1" runat="server">
<asp:TemplateField HeaderText="操作">
                                    <ItemTemplate>
 <asp:LinkButton ID="LinkButton1" runat="server" Text="修改你的那个字段" CommandName="set_top" CommandArgument='<%#Eval("id") %>'></asp:LinkButton>
 </ItemTemplate>
                                </asp:TemplateField>                       
                        </asp:GridView>

后台
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Int32 id = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "set_top")
        {
           string sql = "update news set istop=1 where id=" + id;//写修改字段的sql语句
        }
try
        {
            DataBase.Runsql(sql);//执行修改sql语句
        }
        catch
        {
            PageAbout.ShowMsg("操作失败!");
        }
}
这样就OK了,还看不懂的话加QQ694903456
     

#4


前台GridView1里面还得加上这个
OnRowCommand="GridView1_RowCommand"

#5


引用 2 楼 zhumingtiancai 的回复:
你要修改哪个列 在GridView的那个方法里面就获取这个列的值和ID值修改就好了嘛。。。

 我现在是可以修改的  现在问题是 我想把一个字段不显示  隐藏 但是我要取到他的值

#6


影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex]FindControl("控件ID")).Text.ToString().Trim();

#7


引用 6 楼 wx8849 的回复:
影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex]FindControl("控件ID")).Text.ToString().Trim();

获取不了

#8


比如你最后一列有个"修改"按钮,那么可以在该列放一个隐藏域控件

<asp:Hidden id="xxx" runat="server"  value='<%# Bind("字段名称")%>'/>

在后台获取就可以了

#9


引用 7 楼 yankai159357 的回复:
引用 6 楼 wx8849 的回复:
影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex].FindControl("控件ID")).Text.ToString().Trim();

获取不了

少个点,而且必须是模版列

#10


HiddenField   隐藏域传值  
 FindControl 找隐藏域的ID

#11


<asp:Hidden id="xxx" runat="server" value='<%# Bind("字段名称")%>'/>

#12


引用 9 楼 wx8849 的回复:
引用 7 楼 yankai159357 的回复:
引用 6 楼 wx8849 的回复:
影藏列可以根据控件ID去获取

string grade = ((TextBox)gvFiles.Rows[e.RowIndex].FindControl("控件ID")).Text.ToString().Trim();

获取不了

少个点,而且必须是模版列
  点我加上了的  但是还是取不了

#13


用模板列 里面绑定 textbox 或lable 

然后再代码中用 gridview1.rows[i].FindControl("控件Id") 看能不能获取到值 

#14


只想修改一个字段,那把不想修改的在gridview里面设为只读的,那样就只能修改一个字段了。

#15



后台
((TextBox)gv_Box.Rows[e.RowIndex].FindControl("lbl_ItemType") as TextBox).Text.Trim()

前台
<ItemTemplate>
                                        <asp:Label ID="lbl_ItemType" runat="server" Text='<%# Eval("Remark") %>' Visible="false"></asp:Label>
                                    </ItemTemplate>

#16


引用楼主 yankai159357 的回复:
我只想修改一个字段 状态字段。
由于字段多 但是我的其他字段 如果 隐藏 就取值不了

同意#13楼。将你不需要修改的字段变为模板列,然后在其EditTemplate模板中的东西,用ItemTemplate模板中的东西复制过来,它就是只读的了。

#17


引用 15 楼 wx8849 的回复:
C# code

后台
((Label )gv_Box.Rows[e.RowIndex].FindControl("lbl_ItemType") as Label ).Text.Trim()

前台
<ItemTemplate>
                                        <asp:Label ID="lbl_ItemType" runat="……

#18


你是用什么方式隐藏的,visible?这样是无法取值的。

1、protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e) 
        { 
                //用CSS   隐藏列     
                e.Row.Cells[3].Style.Add( "display ",   "none ") 
                for   (int   i   =   16;   i   <=   28;   i++) 
                { 
                        e.Row.Cells[i].Style.Add( "display ",   "none "); 
                } 
        }
2、设计中添加绑定列时钩上“不可见”复选框 
3、width=0
4、建立css样式,内容是display:none.然后给需要隐藏的列的,head,item都加上这个样式

#19


另外即使不使用模板列,GridView的列定义上也应该一个ReadOnly属性吧?!

#20


添加一列为id,把Visible设为false

#21


这论坛真活跃