Использование контейнера. DataItem в ItemTemplate

Вместо этого используйте this.randInt. randInt не является опорой, скорее определена в классе.

class Question extends React.Component {
  constructor(props) {
    super(props);
    this.randInt = String(Math.floor(Math.random()*2) + 1);
  }

  question = {
    quest: questions[this.randInt].quest,
    answers: questions[this.randInt].answers,
    correct: questions[this.randInt].correct
  }
}

5
задан John Saunders 16 April 2009 в 23:42
поделиться

3 ответа

О, спасибо! Это определенно помогло. Итак, мне действительно нужно больше html внутри, поэтому я попробовал метод заполнителей, на который вы указали.

Итак, у меня есть это сейчас:

<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
Video Stuff
</asp:PlaceHolder>

<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Video File") == "" %>'>
Audio Stuff
</asp:PlaceHolder>

Он почти работает, за исключением того, что видеофайл виден в обоих случаях, когда он должен только для первого.

Я также попробовал это:

<asp:PlaceHolder id="PlaceHolder1" runat="server" Visible='<%# Eval("Video File") != "" %>'>
    Video Stuff
    </asp:PlaceHolder>

<asp:PlaceHolder id="PlaceHolder2" runat="server" Visible='<%# Eval("Audio File") != "" %>'>
    Audio Stuff
    </asp:PlaceHolder>

Но это заставило оба показать все время. Я чувствую, что это почти там.

Спасибо!

1
ответ дан 18 December 2019 в 14:51
поделиться

О, не важно, я понял !!

Это сработало окончательно:

    <asp:PlaceHolder id="PlaceHolder1" runat="server" 
     Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") != "" %>'>
    Video Stuff
    </asp:PlaceHolder>

    <asp:PlaceHolder id="PlaceHolder2" runat="server" 
     Visible='<%# Field(((DataRowView)(Container.DataItem)), "Video File") == "" %>'>
    Audio Stuff
    </asp:PlaceHolder>

Спасибо ТАК большое!

0
ответ дан 18 December 2019 в 14:51
поделиться

Вы не можете использовать Container.DataItem вне выражений привязки данных <% # ...%>.

Я предлагаю вам изменить свой код на что-то вроде этого (извините, но я не могу протестируйте его в настоящее время):

<ItemTemplate>
  <asp:HyperLink runat="server"
    Visible='<%# Eval("Video File") != "" %>'
    NavigateUrl='<%# Eval("Video File")' Text="Download Link" />

  <embed runat="server" Visible='<%# Eval("Video File") == "" %>'
    height="14" width="661" name="plugin"
    src="<%# ContentUploadURL%>/<%# Field(((DataRowView)(Container.DataItem)), "Audio File")%>"
    type="audio/mpeg" autostart="false" />
</ItemTemplate>

Ключ должен установить свойство Visible двух элементов управления на основе поля «Видеофайл» элемента данных.

См. также этот вопрос: Условное связывание данных ASP.Net

12
ответ дан 18 December 2019 в 14:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: