GridView RowDataBound 不是 运行 代码
GridView RowDataBound not running code
我在 sql 中有 Ref table 和 patientDetails。例如,在 Ref 中,我有带有值(女性、男性等)的 Gender 列,在 patientDetails 中,Gender 列为 24,我将数据绑定到 patientDetails,我在 Gridview 的 Gender 列中有 24,但它应该是 Female。 (外键和导航属性不起作用,因为我在 Ref table 中有很多不同的行,比如种族、宗教等)。我被告知 RowDataBound 可以工作,所以我现在有了这个方法,但它不会超过 If 语句行..
更多详情:
我的数据源绑定到 PatientDetails table,它有 Gender 列(带有数值 - 从 ref table 获取)。我的意思是我有 Ref table(就像查找所有内容一样 - 包含列 ID、名称、描述)在名称中我有性别、族群、宗教)在描述列中我有性别的值,例如:男性,女性等但是在 Patient 的 Gender 列中返回值的相应 Ref ID - 对于 female 它将在 Patient 的 Gender 列中存储 24)所以我的 Gridview 正确绑定并获取存储在 PatientDetails table 中的内容但是有Gender 中的 24, 25 没有帮助显示所以我被告知 RowDataBound 可以在 Ref table
中带上正确的对应值
Protected Sub gvPatientDetails_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim lblGender As Label = e.Row.FindControl("lblGender)
End If
End Sub
<asp:GridView ID="gvPatientDetails" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvPatientDetails_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:Label ID="lblGender" runat="server" Text='<% #Eval("lblGender") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
好的,我成功了。
对于所有可能遇到这个问题的初学者来说,上面的代码可以正常工作,当我第一次调试它时它只是命中 IF 语句然后没有进入(因为第一个是 Header (我知道呃!!)点击继续,它应该给你标签的实际值,然后它应该很简单。只是 getDataFromRef (一种从 Ref - id = lblGender 获取数据的方法)然后
lblGender.Text = ( The value from method - getDataFromRef ).
基本上我不知道调试器会从 Header 开始,然后当您点击继续时会遍历 gridview 行!
一切顺利,编码愉快!:)
我在 sql 中有 Ref table 和 patientDetails。例如,在 Ref 中,我有带有值(女性、男性等)的 Gender 列,在 patientDetails 中,Gender 列为 24,我将数据绑定到 patientDetails,我在 Gridview 的 Gender 列中有 24,但它应该是 Female。 (外键和导航属性不起作用,因为我在 Ref table 中有很多不同的行,比如种族、宗教等)。我被告知 RowDataBound 可以工作,所以我现在有了这个方法,但它不会超过 If 语句行..
更多详情:
我的数据源绑定到 PatientDetails table,它有 Gender 列(带有数值 - 从 ref table 获取)。我的意思是我有 Ref table(就像查找所有内容一样 - 包含列 ID、名称、描述)在名称中我有性别、族群、宗教)在描述列中我有性别的值,例如:男性,女性等但是在 Patient 的 Gender 列中返回值的相应 Ref ID - 对于 female 它将在 Patient 的 Gender 列中存储 24)所以我的 Gridview 正确绑定并获取存储在 PatientDetails table 中的内容但是有Gender 中的 24, 25 没有帮助显示所以我被告知 RowDataBound 可以在 Ref table
中带上正确的对应值 Protected Sub gvPatientDetails_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim lblGender As Label = e.Row.FindControl("lblGender)
End If
End Sub
<asp:GridView ID="gvPatientDetails" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvPatientDetails_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:Label ID="lblGender" runat="server" Text='<% #Eval("lblGender") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
好的,我成功了。
对于所有可能遇到这个问题的初学者来说,上面的代码可以正常工作,当我第一次调试它时它只是命中 IF 语句然后没有进入(因为第一个是 Header (我知道呃!!)点击继续,它应该给你标签的实际值,然后它应该很简单。只是 getDataFromRef (一种从 Ref - id = lblGender 获取数据的方法)然后
lblGender.Text = ( The value from method - getDataFromRef ).
基本上我不知道调试器会从 Header 开始,然后当您点击继续时会遍历 gridview 行!
一切顺利,编码愉快!:)