0

これは別の投稿で入手しました

<asp:RadioButtonList runat=server ID="rd" SelectedValue='<%# Bind("sex").GetType() == typeof(DBNull) ? null : Bind("sex") %>'
       <asp:ListItem Text="male" Value="1"></asp:ListItem>
       <asp:ListItem Text="female" Value="2"></asp:ListItem>
</asp:RadioButtonList>

これは正しい構文ですか?? はいの場合、誰かがそれのVBバージョンを提供できますか??

SelectedValue='<%# Bind("sex").GetType() == typeof(DBNull) ? null : Bind("sex") %>'

ありがとう

編集: その投稿へのリンクは次のとおりです: https://stackoverflow.com/a/5765930/713847

4

2 に答える 2

3

value="" を使用して 3 番目の非表示の listitem をコントロールに追加すると、null 評価がそれに一致するようになるため、問題は回避されます....selectedvalue で dbnull をテストする必要がなくなります。属性。

<asp:RadioButtonList runat=server ID="rd" SelectedValue='<%# Bind("sex")%>'
       <asp:ListItem Text="male" Value="1"></asp:ListItem>
       <asp:ListItem Text="female" Value="2"></asp:ListItem>
       <asp:ListItem Text="" Value="" style="display:none"></asp:ListItem>
</asp:RadioButtonList>
于 2014-11-13T16:20:49.983 に答える
1

これが機能しないことはかなり確信しています。正しい翻訳は次のとおりです。

If(TypeOf Bind("sex") Is DBNull, Nothing, Bind("sex"))

コードビハインドで読みやすい方法でそれをやらないのはなぜですか?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim sex = getSexFromStoredProcedure()
        If Not sex Is Nothing Then rd.SelectedValue = sex
    End If
End Sub

編集:あなたはそれがFormView. イベントでやり方を紹介しますDataBound

Private Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound
    Select Case FormView1.CurrentMode
        Case FormViewMode.ReadOnly
            ' adjust the DataSource accordingly if its not a DataRow '
            Dim row = DirectCast(FormView1.DataItem, DataRow)
            Dim LblSex = DirectCast(FormView1.FindControl("LblSex"), Label)
            Dim sex As String = row.Field(Of String)("Sex")
            LblSex.Text = If(sex Is Nothing, "", sex)

        Case FormViewMode.Edit
            ' adjust the DataSource accordingly if its not a DataRow '
            Dim row As DataRow = DirectCast(FormView1.DataItem, DataRow)
            ' assuming your RadioButtonList is inside the EditItemTemplate '
            Dim RblSex = DirectCast(FormView1.FindControl("RblSex"), RadioButtonList)
            Dim sex As String = row.Field(Of String)("Sex")
            If Not sex Is Nothing Then RblSex.SelectedValue = sex

        Case FormViewMode.Insert

    End Select
End Sub
于 2012-04-12T19:54:51.903 に答える