首先,你不能把两个混用啊~~
其次,你根本就没有指定{0}是ID啊,虽然表面看上去ID={0},但这个前面的ID是给链接用的,而不是给这个控件的数据栏位ID!!!
你要是看着别扭糊涂,那就把ID={0}改成Kao={0},然后在另一个页面取Kao就可以了。难道这样写我就能取到Kao了吗?答案当然是不可能的。所以这个Kao只是页面的参数,而不是控件数据的栏位~
打个比方:object o;这个o是个object吧,那么我定义string o = "object";那这个o是object的吗?
当然不是,只是值等于object,看上去类似而已....
你要是这样写的话就应该这样:
1.">
只有.net的服务器控件才会这样处理,比如你上面的HyperLinkField.
它里面的DataNavigateUrlFields,就好像string.format(str,params object[] paras)里的paras数组一样,可DataNavigateUrlFields如果有多个参数的话怎么办,自己本身是字符串而不是数组。所以
对多个参数采取字符串按','分隔(默认分隔符,应该对应的属性设置分隔符,你找找),所以多个参数就变成了DataNavigateUrlFields="ID,PName",
而formatstring就可以变成DataNavigateUrlFormatString="csstest1.aspx?ID={0}&PName={1}",
那么string.format就可以变成string.format(”csstest1.aspx?ID={0}&PName={1}“,
new object[]{Data["ID"],Data["PName"]});
上面是说多个的情况,那么对你刚用{0}的这种也可以改成:
2. ">
注意到,我上面和这次取ID都用了Eval("ID"),因为获取后端的数据就要这样写,不然你的PName为什么一定这样写呢(我讲的是这种写法,其他写法不管)?简单的说,如果你用绑定取值,那么一定用Eval,而单单是使用个{0},谁知道你要取什么。
服务器控件HyperLinkField里的{0},那是因为有DataNavigateUrlFields来指定取ID.
而如果使用HTML控件,则使用{0}(我写的第2种),也必须从后端把ID值取出,然后用string.Format来显示链接~
总之,一定要让服务器端识别要获取的是ID值和能取得ID值~不管哪种也好,都要取到ID,输出到客服端!
至于为什么存在写法不同,那就是控件封装的问题了,.net控件提供了属性,HTML控件没提供,当然写法有差异,使用控件也要入件随俗啥~~~
但结果都一样,都是为了达到这个目的。