2013-04-25 74 views
1

ASP.Net asp:ControlParameter ControlID是一個公共共享變量而不是ASP:label?ASP.Net asp:ControlParameter ControlID是一個公共共享變量而不是asp:label嗎?

我們使用asp:label作爲DataSource的參數,但現在想要使用公共共享變量而不是標籤。

這是使用asp:標籤的參數標記。

<asp:ControlParameter 
    ControlID="LabelCheckBoxMonday" 
    Name="DayOfWeekMonday" 
    PropertyName="Text" 
    Type="String" /> 

我們在代碼隱藏中添加了這個公共共享變量。

Public Shared blnDayOfWeekMonday As Boolean 

我們已將參數的標記更改爲此。

<asp:ControlParameter 
    ControlID="blnDayOfWeekMonday" 
    Name="DayOfWeekMonday" 
    PropertyName="Text" 
    Type="String" /> 

這是將值放入變量中的編碼。用於爲標籤執行此操作的原始編碼已被註釋掉。

Protected Sub ImageButtonInsertDayOfWeekMonday_Click(sender As Object, e As ImageClickEventArgs) 

    Dim imgTheImageButton As New ImageButton 

    imgTheImageButton = DetailsView.FindControl("ImageButtonInsertDayOfWeekMonday") 

    If imgTheImageButton.ImageUrl = "../../Images/checked.png" = True Then 

     imgTheImageButton.ImageUrl = "../../Images/unchecked.png" 
     '   LabelCheckBoxMonday.Text = False 
     blnDayOfWeekMonday = False 
    Else 

     imgTheImageButton.ImageUrl = "../../Images/checked.png" 
     '   LabelCheckBoxMonday.Text = True 
     blnDayOfWeekMonday = True 
    End If 
End Sub 

所有這一切都是下面的InsertCommand的一部分:

InsertCommand= 
     "INSERT INTO [TeacherSchedule] 
      ([DayOfWeekMonday], 
      [DayOfWeekTuesday], 
      [DayOfWeekWednesday], 
      [DayOfWeekThursday], 
      [DayOfWeekFriday], 
      [DayOfWeekSaturday], 
      [DayOfWeekSunday], 
      [StartTime], 
      [EndTime], 
      [ClassID], 
      [TeacherID]) 
     VALUES (@DayOfWeekMonday, 
       @DayOfWeekTuesday, 
       @DayOfWeekWednesday, 
       @DayOfWeekThursday, 
       @DayOfWeekFriday, 
       @DayOfWeekSaturday, 
       @DayOfWeekSunday, 
       @StartTime, 
       @EndTime, 
       @ClassID, 
       @TeacherID)" 

當Web窗體運行沒有改變它向公衆共享變量之後發生的。

你能告訴我還有什麼我需要做的繼續?

*更新*

使用標記建議,我發現瞭如何做一個asp:QueryStringParameter但仍然不知道如何用一個值來填充它。這是參數作爲一個asp:QueryStringParameter

<asp:QueryStringParameter 
    Name="DayOfWeekMonday" 
    QueryStringField="QSDayOfWeekMonday" /> 

如何填充QSDayOfWeekMonday在ImageButtonInsertDayOfWeekMonday_Click子程序?

我想:

QSDayOfWeekMonday = False 

,但有一個 「未聲明」 的錯誤。

*完整的標記和代碼隱藏編碼*

http://pastebin.com/embed_js.php?i=kye3c2U8

+0

blnDayOfWeekMonday不是控件,所以不能使用ControlID。說實話,這兩種方式都很糟糕。爲什麼不使用查詢字符串參數? – 2013-04-25 14:49:47

+0

感謝您的回覆Mark。你能告訴我們如何使用查詢字符串參數以及所需的標記和代碼隱藏編碼將真假存儲到@DayOfWeekMonday中嗎?我還包括InsertCommand,所以你知道我們正在嘗試做什麼。 – 2013-04-25 14:58:45

+0

謝謝pastebin樣本。 DayOfWeekMonday,作爲一個靜態的,意味着每個人都會分享相同的價值。我不認爲這就是你想要的。另外,我相信DefaultValue是一個字符串,所以你需要確保它是一個字符串值。 – 2013-04-25 18:48:31

回答

2

另一種選擇是使用的參數爲:

<asp:Parameter Name="DateOfWeekMonthly" /> 

並在代碼中設置默認值屬性的值你要指定,如:

DataSourceControl1.Parameters["DateOfWeekMonthly"].DefaultValue = someVariable; 

這對我有效。

您可以在觸發的選擇事件中建立此事件;此事件在選擇發生之前觸發;因此,您可以建立布爾值。我相信在這裏,你可以將它添加到事件參數中定義的值的集合中。

+0

感謝您的回答。我使用SqlDataSourceDetails.InsertParameters(「DayOfWeekMonday」)。DefaultValue = False 但希望能夠實際設置值爲false而不是僅設置默認值。這可以做到嗎? – 2013-04-25 16:10:02

+0

嘗試使用「False」或Boolean.FalseString或「0」(表示布爾值在SQL中有點錯誤)。我不是100%確定這些選項中的哪一個可以正常工作(因爲我不知道我是否使用了布爾參數這個技巧),但其中的一個可以解決這個問題。 – 2013-04-25 17:28:06

+0

我發現我可以將Type =「Boolean」添加到參數中,但由於我想允許用戶在true和false之間切換,所以在代碼運行時第一次可以使用默認值。當我運行代碼時,參數以空值結束。 – 2013-04-25 17:37:46

0

我用這個方式更短:

<asp:Parameter Name="DateOfWeekMonthly" Type="Boolean" DefaultValue="true" /> 

這也是工作。