今天在研究ASP。NET与javascript的结合运用,碰到一个问题------
.net里有代码如下:
 for (int i = 0; i < GridView1.Rows.Count; i++)
{
   //   GridView1.Rows[i].Attributes["id"] = "tr" + i.ToString();//这里    
        //如果换成 GridView1.Rows[i].ID="tr" + i.ToString();就不行  //
}
运行后查看页面的html源文件,可以看到:
<tr id="tr1">
<td>
                            <input id="GridView1_ctl03_CheckBox1" type="checkbox" name="GridView1$ctl03$CheckBox1" onclick="checkme(this,tr1);" />
                            <span id="GridView1_ctl03_Label1">综艺</span>
                        </td>
</tr>
现在我的疑惑是:
GridView1.Rows[i].Attributes["id"]为什么可以控制到客户端html源文件里的值,而GridView1.Rows[i].ID就不可以?

解决方案 »

  1.   

    Attributes
    简单点儿说就是给服务器控件添加个js脚本。
    就是给DOM元素加一个属性的作用
      

  2.   

    比如:
    Button1.Attribute.Add("onclick","window.open('XXX.aspx','_self');");
      

  3.   

    WebControl.Attributes 属性
    表示获取与控件的属性不对应的【任意特性(html/css/js)】(只用于呈现)的集合。 因为服务器控件,没有提供或者暴露了所有 html 元素的可用属性,故提供 Attributes 供用户自定义而,Control.ID 属性表示在服务器端【有效】【命名容器(NamingContainer)】的 “ID”,对于【静态】部署在 .aspx 上的控件, .aspx.cs 中同时使用此属性作为【变量名】引用控件实例
    GridView1.Rows[i].Attributes["id"]为什么可以控制到客户端html源文件里的值,而GridView1.Rows[i].ID就不可以?
    ============
    Control.ID 不与客户端 html 属性直接对应,
    Control.UniqueID/Control.ClientID 与 客户端 html 中的 name/id 分别对应,
    这两者基于 Control.ID 和 NamingContainer 生成,由 ASP.NET 内部维护,以保证在客户端的唯一性
    可以参考:
    关于 asp.net 服务器控件几个 ID 的说明 
    http://www.cnblogs.com/Jinglecat/archive/2007/04/28/730511.html
      

  4.   

    对于 TableRow 1. GridViewRow 继承此类2. 对应 html tr但,GridViewRow 默认不会呈现 html tr 的 id,因为可编程角度看,大多数情况下他几乎没有意义
      

  5.   

    Jinglecat(晓风残月 >> 问题需简洁,错误要详细,需求得明确) ( ) 信誉:94 现在最活跃的星星
      

  6.   

    @octverve,  @yan53125过去的一天, 087-08-27, 没有回复过一帖,现在只有凌晨才有时间 ....表给偶压力哈 :)