asp.net中的各种数据绑定使用

本文分享了ASP.NET中GridView控件的高级使用技巧,包括时间格式化、数据绑定、货币格式化等,并提供了示例代码。

翻出以前的asp.net学习笔记,发现很多有关Gridview中的数据绑定使用,发上来大家看看,新手参考(控件党神器,嘿嘿。。。),高手莫笑!

1、Gridview设置时间格式

<asp:BoundField DataField="Adddate" DataFormatString="{0:d}" HeaderText="时间" />

2、绑定后台函数

<asp:TemplateField HeaderText="最后回复">
<ItemTemplate>
 <%# Convert.ToInt32(Eval("LastReplyId")) == 0 ? "暂无回复" : getUsername(Eval("LastReplyId").ToString())%>                                
</ItemTemplate>
<HeaderStyle Height="20px" Width="20%" />
<ItemStyle Height="30px" HorizontalAlign="Center" />
</asp:TemplateField>

public string getUsername(string ReplyId)
{
   return dt.Rows[0][1].ToString() + " by:" + dt.Rows[0][0].ToString();
}

3、页面数据绑定

<asp:LinkButton ID="lbModify" runat="server" PostBackUrl='<%# "~/modifyGoods.aspx?id="+Eval("id") %>' >修改</asp:LinkButton>

<asp:Label ID="Label1" runat="server" Text='<%# Convert.ToInt32(Eval("istop"))==0?"是":"否" %>'></asp:Label>

<asp:Label ID="Label2" runat="server" Text='<%# Convert.ToDateTime(Eval("creatime")).ToString("yyyy-MM-dd") %>'></asp:Label>

<a href="notice.aspx?id=<%# Eval("id") %>"><%# Eval("title").ToString().Length>9?Eval("title").ToString().Substring(0,8)+"..":Eval("title").ToString() %></a>

4、gridview中linkbutton绑定CommandArgument

<asp:TemplateField HeaderText="操作">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<HeaderStyle Font-Bold="False" Width="90px" />
<ItemTemplate>
<asp:LinkButton ID="lbModify" runat="server" CommandArgument='<%# Eval("id") %>' 
  oncommand="lbModify_Command" >取消授权</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

string id = e.CommandArgument.ToString();

5、绑定嵌套三目运算符

<asp:TemplateField HeaderText="购买方式">
<HeaderStyle Font-Bold="False" Width="50px" />
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
  <asp:Label ID="Label1" runat="server" Text='<%# Convert.ToInt32(Eval("buyType"))==0?"按天购买":Convert.ToInt32(Eval("buyType"))==1?"按次购买":"整部购买" %>'></asp:Label>
</ItemTemplate>
<FooterStyle BorderColor="#D6EFF8" BorderStyle="Solid" />
</asp:TemplateField>

6、Gridview设置货币格式

<asp:BoundField DataField="price" DataFormatString="{0:C}" HeaderText="金额">
<HeaderStyle Font-Bold="False" Width="45px" />
<ItemStyle HorizontalAlign="Center" />
<FooterStyle BorderColor="#D6EFF8" BorderStyle="Solid" />
</asp:BoundField>

7、绑定javascript函数与参数

<asp:TemplateField HeaderText="查看">
<ItemTemplate>
<a href="javascript:void(0)" onclick='<%# "openWindow(\""+ Eval("empId").ToString() +"\")" %>' id="btn-check">
查看</a>
</ItemTemplate>
<ItemStyle Width="40px" />
</asp:TemplateField>

先这么多,有点乱,凑合看吧!


<think> 嗯,用户想了解Zigbee ASH协议中Data Field内容的定义。这个问题很专业,需要准确解析协议细节。 ASH协议是TI专为Zigbee设计的传输层协议,它的Data Field结构需要仔细说明。首先想到数据帧最外层是帧头,包含两个字节的控制信息。其中低10位是数据长度,这是关键字段,因为用户特别关注Data Field定义。 接下来要解释Data Field的组成结构。它包含三个主要部分:传输层头部、NWK帧和载荷。传输层头部有帧类型和分片控制信息,这部分需要具体说明各种帧类型的值范围。NWK帧就是标准的Zigbee网络层数据包,而载荷才是最终的应用数据。 用户可能混淆了ASH和Zigbee协议栈的关系,需要特别指出ASH是底层传输协议,真正的Zigbee数据封装在NWK帧里。这样用户就能理解Data Field在整个协议栈中的位置了。 考虑到用户的技术背景,补充说明校验机制也很重要。ASH使用CRC-16校验整个数据帧,这是确保传输可靠性的关键机制。最后用具体格式示例展示会更直观,比如最小数据帧的字节分布。 用户之前查询过协议相关内容,这次问题更聚焦特定字段定义,说明ta在进行底层开发或调试。回答时需要兼顾技术准确性和可读性,避免过于晦涩的术语堆砌。 </think> Zigbee ASH(Advanced Serial Host)协议是德州仪器(TI)为其Zigbee SoC(如CC253x)设计的专有串行传输协议,用于在主机处理器(如MCU)和Zigbee网络协处理器(NCP)之间传输数据帧。**ASH协议Data Field的内容定义如下:** **Data Field结构 (在ASH帧中):** ``` | ASH Frame Header (2 Bytes) | Data Field (Variable Length) | FCS (2 Bytes) | ASH Frame Footer (1 Byte) | ``` 1. **ASH Frame Header (2 Bytes):** * **低10位 (Bits 0-9):** **数据长度 (Data Length)**。指示`Data Field`包含的**字节数**。这是定义`Data Field`边界的关键字段[^1]。 * **高6位 (Bits 10-15):** **控制位 (Control Bits)**。包含帧类型(如数据帧、ACK帧、NAK帧等)、重传标志、流控标志等信息。 2. **Data Field (变长 - 由Header中的长度域决定):** * **这才是ASH协议承载的`有效载荷`**,其内部结构由其上层的协议(主要是Zigbee协议栈)定义。 * **Data Field内容 = 传输层头部 + NWK帧** * **传输层头部 (Transport Header, 1 Byte):** * 包含帧类型和分片控制信息。 * **Bit 7:** `Frame Type` - `0` 表示数据帧 (Data Frame), `1` 表示命令帧 (Command Frame)。Zigbee应用数据通常封装在数据帧中。 * **Bits 5-6:** `Subsystem` - 指示该帧属于哪个子系统(如`0x01`表示`SYS`, `0x02`表示`MAC`, `0x03`表示`NWK`, `0x04`表示`AF`等)。Zigbee数据包通常在`NWK`子系统。 * **Bits 0-4:** `Command ID` - 子系统内的具体命令标识符。对于来自应用的数据,通常是`Data Request`或`Data Confirm`等命令的标识符。 * **NWK帧 (Network Frame):** * 这是一个完整的、符合Zigbee NWK层规范的数据包。 * **NWK Header:** 包含NWK层控制信息、源/目的地址、半径、序列号等。 * **APS Payload:** 包含Zigbee应用层(APS)的帧头和安全头(如果启用)。 * **Application Payload:** **最终的用户应用程序数据**,即您通过Zigbee网络发送的实际信息内容(如传感器读数、控制命令等)[^2]。 3. **Frame Check Sequence (FCS) (2 Bytes):** * 对整个ASH帧(包括Header和Data Field)进行**CRC-16校验**,用于检测传输错误。 4. **ASH Frame Footer (1 Byte):** * 固定值`0x7E`,作为帧结束分隔符。 **总结关键点:** * ASH协议`Data Field`的**长度**由ASH帧头的低10位明确指定。 * `Data Field`内部包含一个**传输层头部**和一个完整的**Zigbee NWK层帧**。 * **传输层头部**标识了该帧所属的子系统(如NWK)和具体的命令类型。 * **Zigbee NWK帧**内部封装了APS层帧,最终在**APS Payload**中携带了**用户应用程序的实际数据**。 * ASH协议本身不定义应用数据的格式,它只是可靠传输Zigbee协议栈生成的NWK帧的载体。应用数据的结构由Zigbee应用层(APS)和具体的Profile/Cluster定义。 **简单示例 (一个携带Zigbee应用数据的最小ASH数据帧结构):** ``` | 0x00 0x07 | ... | ... | 0xXX | ... | ... | ... | ... | ... | ... | ... | ... | ... | 0xYY 0xZZ | 0x7E | |-- ASH Header (2B) --|----------------------- Data Field (7 Bytes) -----------------------|-- FCS (2B) --|Footer| ``` * ASH Header `0x00 0x07`: 低10位`0x0007` = 7, 表示Data Field长度为7字节。 * Data Field (7 Bytes): * Transport Header (1B): 例如 `0x25` (Bit7=0数据帧, Bits5-6=01 NWK子系统, Bits0-4=0x05 可能是Data Request命令ID)。 * NWK Frame (6B): 一个简化的NWK帧(包含NWK头、简化的APS头和少量应用数据)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值