Posted on 2007-09-01 09:50 张荣华 阅读(938) 评论(0)  编辑  收藏 所属分类: DotNet

1.GridView中使用超链接的技巧
  GridView中的超级链接,可以设置一个模版列,放入超级链接的控件,设置绑定参数即可。
数据绑定方式有两种,如下示例:
◆Eval方式     <%# Eval("id") %>
◆Bind方式    <%# Bind("id","~/info.aspx?id={0}") %>
推荐使用第一种方式,可以在一个<%# %>里放入多个绑定,而第二种只能如此绑定一个值
<%# Eval("id") + ":" + Eval("name")%>

做超级链接的控件,我们也有多种选择:
◆asp:LinkButton
示例
<asp:LinkButton ID="LinkButton2" OnClientClick=<%# "window.open('info.aspx?id=" + Eval("id") + "&name=" + Eval("name") + "')" %> runat="server"><%# "LinkButton方式绑定:" + Eval("id") %></asp:LinkButton>
◆asp:HyperLink
示例
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>' Text='<%#"HyperLink控件:" + Eval("id") %>'></asp:HyperLink>
◆a标签
示例
<a href='<%# "info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>'>a标签:<%# Eval("id") + ":" + Eval("name")%></a>
<a href='Javascript:alert("<%# "~/info.aspx?id=" + Eval("id") + "&name=" + Eval("name") %>")'>链接js事件:<%# Eval("id") %></a>

LinkButton 不好设置,推荐使用HyperLink或者a的方式,简单实用。特别是a标签,使用Javascript的方法也比较方便。
 补充:
<asp:LinkButton ID="LinkButton3" runat="server" PostBackUrl='<%# "~/Default.aspx?id=" + Eval("FUserID") %>'
CausesValidation="False" Text="跳转编辑"></asp:LinkButton>

2.gridview模板列加htmlinputcheckbox的取值
①aspx文件:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            DataKeyNames="OrderID,ProductID" DataSourceID="SqlDataSource1" EmptyDataText="111">
            <Columns>
                <asp:BoundField DataField="OrderID" HeaderText="OrderID" ReadOnly="True" SortExpression="OrderID" />
                <asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" SortExpression="ProductID" />
                <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" SortExpression="UnitPrice" DataFormatString="{0:C}" />
                <asp:BoundField DataField="Quantity" HeaderText="Quantity" SortExpression="Quantity" />
                <asp:BoundField DataField="Discount" HeaderText="Discount" SortExpression="Discount" />
                <asp:ImageField DataImageUrlField="OrderID" DataImageUrlFormatString="/{0}.gif" HeaderText="pic">
                </asp:ImageField>
                <asp:TemplateField FooterText="id">
                    <ItemTemplate>
                        &nbsp;<input id="Checkbox1" runat="server" type="checkbox" value='<%# Eval("OrderID") %>' />                      
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <%=gridview1.PageIndex +1%>of<%=GridView1.PageCount%>
②cs文件:
string str1;
HtmlInputCheckBox cb;
str1="";
for(int i=0;i<GridView1.Rows.Count-1;i++)
{
  cb=GridView1.Rows(i).Cells(6).FindControl("Checkbox1");
  if(cb.Checked)
  {
    if(str1=="")
    {
      str1=cb.Value;
    }
    else
    {
      str1=str1+","+cb.Value;
    }
  }
}
Label1.Text=str1;

3.gridview模板列绑定gridview
①aspx文件:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False"
                    ReadOnly="True" SortExpression="ProductID" />
                <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
                <asp:TemplateField HeaderText="detail">
                    <ItemTemplate>
                        &nbsp;&nbsp;&nbsp;
                        <asp:GridView ID="GridView2" runat="server">
                        </asp:GridView>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
②cs文件:
protected void GridView1_RowDataBound(object sender,System.Web.UI.WebControls.GridViewRowEventArgs e)
{
  if(e.Row.RowType==DataControlRowType.DataRow)
  {
    SqlDataSource2.SelectParameters.Clear();
    SqlDataSource2.SelectParameters.Add("id",e.Row.Cells(0).Text);
    GridView gv;
    gv=e.Row.Cells(2).FindControl("GridView2");
    gv.DataSource=this.SqlDataSource2;
    gv.DataBind();
  }
}

4.GridView更新和删除显示提示信息
①aspx文件:
<asp:GridView ID="GridView1" runat="server"
            DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="au_id" OnRowCommand="GridView1_RowCommand" OnRowUpdating="GridView1_RowUpdating" OnRowDeleting="GridView1_RowDeleting">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="Edit" runat="server" CommandName="Edit">编辑</asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField Visible="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="Update" runat="server" CommandName="Update" OnClientClick="return confirm('确定要更新?');">更新</asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="Delete" runat="server" CommandName="Delete" OnClientClick="return confirm('确定要删除');">删除</asp:LinkButton>&nbsp;&nbsp;
                        <asp:LinkButton ID="Cancel" runat="server" CommandName="Cancel">取消</asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:templatefield headertext="Last Name">
                    <itemtemplate>
                        <%#Eval("au_lname") %>
                    </itemtemplate>
                    <edititemtemplate>
                        <asp:textbox id="LastNameTextBox" text='<%#Eval("au_lname") %>'
                            width="175" runat="server"/>
                        <br/>
                        <asp:requiredfieldvalidator id="LastNameRequiredValidator" controltovalidate="LastNameTextBox"
                            errormessage="Please enter a last name." validationgroup="NameGroup" runat="server"/>
                    </edititemtemplate>
                </asp:templatefield>
               
                <asp:templatefield headertext="First Name">
                    <itemtemplate>
                        <%#Eval("au_fname") %>
                    </itemtemplate>
                    <edititemtemplate>
                          <asp:textbox id="FirstNameTextBox" text='<%#Eval("au_fname") %>'
                            width="175" runat="server"/>
                          <br/>
                          <asp:requiredfieldvalidator id="FirstNameRequiredValidator" controltovalidate="FirstNameTextBox"
                                errormessage="Please enter a first name." validationgroup="NameGroup" runat="server"/>
                     </edititemtemplate>
                </asp:templatefield>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Pubs2000 %>"
            ProviderName="<%$ ConnectionStrings:Pubs2000.ProviderName %>" SelectCommand="SELECT au_id, au_lname, au_fname FROM authors"
            UpdateCommand="UPDATE authors SET au_lname = @au_lname, au_fname = @au_fname WHERE (au_id = @au_id)"
            DeleteCommand="DELETE FROM authors WHERE (au_id = @au_id)">
        </asp:SqlDataSource>
②cs文件:
void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        switch (e.CommandName.ToLower())
        {
            case "edit":
                GridView1.Columns[0].Visible = false;
                GridView1.Columns[1].Visible = true;
                break;
            case "update":
            case "delete":
            case "cancel":
                GridView1.Columns[0].Visible = true;
                GridView1.Columns[1].Visible = false;
                break;
            default:
                // Do nothing.
                break;
        }
    }

void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int index = GridView1.EditIndex;
        GridViewRow row = GridView1.Rows[index];

TextBox firstNameTextBox = (TextBox)row.Cells[1].FindControl("FirstNameTextBox");

String firstName = "";
        if (firstNameTextBox != null)
        {
            firstName = firstNameTextBox.Text;
        }

TextBox lastNameTextBox = (TextBox)row.Cells[2].FindControl("LastNameTextBox");

String lastName = "";
        if (lastNameTextBox != null)
        {
            lastName = lastNameTextBox.Text;
        }

Parameter lastNameParameter = new Parameter("au_lname", TypeCode.String, lastName);
        Parameter firstNameParameter = new Parameter("au_fname", TypeCode.String, firstName);

SqlDataSource1.UpdateParameters.Clear();
        SqlDataSource1.UpdateParameters.Add(lastNameParameter);
        SqlDataSource1.UpdateParameters.Add(firstNameParameter);
    }

void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        SqlDataSource1.DeleteParameters.Clear();
    }

转载于:https://www.cnblogs.com/zhangzheny/archive/2007/11/22/968248.html

DataView 使用技巧 [转]相关推荐

  1. ADO.NET的最佳实践技巧

    ADO.NET的最佳实践技巧 简介 本文为您提供了在 Microsoft ADO.NET 应用程序中实现和获得最佳性能.可伸缩性以及功能的最佳解决方案:同时也讲述了使用 ADO.NET 中可用对象的最 ...

  2. ADO.NET 的最佳实践技巧

    这是我很早以前看过的微软的一篇文章,最近,一些网友问的问题很多理论都在里面,所以,整理一下放在这里,大家可以参考一下. 简介 本文为您提供了在 Microsoft ADO.NET 应用程序中实现和获得 ...

  3. 使用ADO.NET 的最佳实践(zz)

    数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档) 发布日期: 4/1/2004 | 更新日期: 4/1/2004 摘要:编写 Microsoft ADO.NET 代码的最佳实践, ...

  4. 最佳实践 ADO.NET实用经验无保留曝光

    ADO.NET作为微软最新的数据访问技术,已经在企业开发中得到了广泛的应用.对于一线的开发人员来说,掌握基本的概念和技术之后,提高应用水平和解决实际问题的最有效手段,莫过于相互交流彼此的最佳时间经验经 ...

  5. ADO.NET实用经验(转自代码中国)

    ADO.NET作为微软最新的数据访问技术,已经在企业开发中得到了广泛的应用.对于一线的开发人员来说,掌握基本的概念和技术之后,提高应用水平和解决实际问题的最有效手段,莫过于相互交流彼此的最佳时间经验经 ...

  6. ADO.NET实用经验 转载

    ADO.NET作为微软最实用的数据访问技术,已经在企业开发中得到了广泛的应用.对于一线的开发人员来说,掌握基本的概念和技术之后,提高应用水平和解决实际问题的最有效手段,莫过于相互交流彼此的最佳时间经验 ...

  7. DataSet DataTable DataReader DataAdapter之间的区别

    1.四者各自的介绍 DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,相当于存在内存中的数据库,应用程序开始运行时,把数据库相关数据保存到DataSet. DataTab ...

  8. net面试整试题及参考答案【转】

    导读: 一.ADO 与ADO.NET两种数据访问方式区别? 1. ADO与ADO.NET简介 ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且 ...

  9. .Net部分 面试问题

    计算机面试问题 2008年07月14日 星期一 上午 10:49 一.ADO 与ADO.NET两种数据访问方式区别? 1. ADO与ADO.NET简介 ADO与ADO.NET既有相似也有区别,他们都能 ...

最新文章

  1. JS设置每日定时任务
  2. python变量类型声明_python中可以声明变量类型吗
  3. 【AI视野·今日CV 计算机视觉论文速览 第195期】Tue, 11 May 2021
  4. 华为、苹果、谷歌高调宣布要造车!瞄准19万亿美元的智能汽车市场!
  5. 迎春舞会之三人组舞 vijos1061 动态规划
  6. selenium.common.exceptions.WebDriverException: Message: Failed to start browser:搞哭了
  7. emblog博客打开显示 数据库密码错误,请返回主页的解决办法!
  8. 计算机控制系统课件百度云,技术员给你防止百度网盘和谐的方法
  9. 01. Introdunction to Zero Knowlege -- Alon Rosen[零知识介绍]
  10. 沪江日语频道 » 日语真题
  11. android app 运行时提示 应用专为旧版 Android 打造
  12. Device Sheets
  13. mysql索引linke和等于_10分钟让你明白MySQL是如何利用索引的
  14. 《安富莱嵌入式周报》第227期:2021.08.23--2021.08.29
  15. 华擎服务器主板 稳定性,用过华擎主板的朋友进来麻烦谈谈心得体会,大家觉...-卓优商学问答...
  16. 尼泊尔宣布将重测珠穆朗玛峰高度
  17. 用Keil C编制单片机高级语言程序,KeilC单片机C语言与研究.doc
  18. 《C语言程序设计第三版》(苏小红)习题十一 课后答案
  19. adb 连接无线手机安装 apk
  20. 基础语法篇_10——设置对话框、颜色对话框、字体对话框、示例对话框、改变对话框和控件的背景及文本颜色、位图显示

热门文章

  1. markdown编辑器之editormd使用整合
  2. 9-2、gets和puts
  3. vue+typescript+poper.js使用
  4. 5g上行速率怎么提升_5G手机到底牛逼在哪里?(SRS轮发)
  5. 《Springboot设计思想》2-Springboot青出于蓝
  6. 数据库的read_only模式
  7. 用java写一个表白神器,要有动画效果
  8. 获取html单选按钮radio的value值
  9. 流媒体领域行不通的“沃尔玛模式”,正在入侵云游戏
  10. DirectX简介 第二篇 DirectDraw简介