漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::


http://blog.csdn.net/fanzhonglei/archive/2008/09/26/2982568.aspx

http://www.jsweb8.cn/html/js_page/132.htm
GridView里有一列绑定的数据很长,显示的时候在一行里面显示,页面拉得很宽。
原因是连续英文段为一个整体导致的,在RowDataBound中添加上了一句e.Row.Cells[2].Style.Add("word-break", "break-all")就可以。如果要给所有的列增加此属性:

    protected void Page_Load(object sender, EventArgs e)
    {
        //正常换行
        GridView1.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");
        //下面这行是自动换行
        GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");

        if (!IsPostBack)
        {
            databind();
        }
    }


public partial class _Default : System.Web.UI.Page
{
    SqlConnection sqlConn;
    SqlCommand sqlComm;
    string strConn = "Data Source=(local);Database=Exercise;Uid=sa;Pwd=sa";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            databind();
        }
    }
    private void databind()
    {
        string strSql = "select * from myDt";
        sqlConn = new SqlConnection(strConn);
        SqlDataAdapter sqlDa = new SqlDataAdapter(strSql, sqlConn);
        DataSet myDs = new DataSet();
        sqlConn.Open();
        sqlDa.Fill(myDs, "myDt");
        GridView1.DataSource = myDs;
        GridView1.DataKeyNames = new string[] { "ID" };//主键 
        GridView1.DataBind();
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            DataRowView drv;
            string str;
            drv = myDs.Tables["myDt"].DefaultView[i];
            str = Convert.ToString(drv["Address"]);
            GridView1.Rows[i].Cells[5].Text = SubStr(str, 2);
        }
        sqlConn.Close();
    }
    private string SubStr(string str, int iLength)
    {
        if (str.Length <= iLength)
        {
            return str;
        }
        string strNewStr = str.Substring(0, iLength);
        strNewStr = strNewStr + "...";
        return strNewStr;
    }
}

在asp.net 2.0中,如果要在绑定列中显示比如日期格式等,如果用下面的方法是显示不了的

<asp:BoundField DataField="Birthday" HeaderText="生日" DataFormatString="{0:yyyy年M月dd日}" />
主要是由于htmlencode属性默认设置为true,已防止XSS攻击,安全起见而用的,所以,可以有以下两种方法解决

1、

<asp:BoundField DataField="Birthday" HeaderText="生日" DataFormatString="{0:yyyy年M月dd日}" HtmlEncode="false" />
将htmlencode设置为false即可

2、另外的解决方法为,使用模版列

                <asp:TemplateField HeaderText="生日">
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("Birthday", "{0:M-dd-yyyy}") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
附录-常用格式化公式:
        {0:C}货币;
        {0:D4}由0填充的4个字符宽的字段中显示整数;
        {0:000.0}四舍五入小数点保留第几位有效数字;
        {0:N2}小数点保留2位有效数字;
        {0:N2}%小数点保留2位有效数字加百分号;
        {0:D}长日期;
        {0:d}短日期;
        {0:yy-MM-dd}例如07-3-25;
        {0:yyyy-MM-dd}例如2007-3-25;

 


 

posted on 2008-09-26 17:36  javaca88  阅读(165)  评论(0编辑  收藏  举报