2016-05-11 61 views
0

我有一個使用Web窗體在C#.Net中編寫的網站。我有一個gridview有三列,第一個是「日期」字段。我向gridview添加了一個空行,並將EditIndex設置爲該行。我希望用戶能夠點擊該可編輯的日期單元格並顯示日期選擇器日曆。無法將日期選擇器添加到C#.NET gridview單元格

我的代碼:
ASPX:

<asp:GridView ID="TaskGridViewAB" runat="server" 
    OnRowDataBound="GridView1_RowDataBound" 
    OnRowUpdating="TaskGridViewAB_RowUpdating"> 
</asp:GridView> 

我得到了從Oracle數據庫這個網格中的數據。 我添加一個空行的結果(這所有的作品):

sql = " - my SELECT statement - " 
OracleCommand cmd = new OracleCommand(sql, Conn); 
... 
OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(cmd); 
//Add the blank row 
DataRow NewRow = dt.NewRow(); 
dt.Rows.Add(NewRow); 
//Fill the table with the SELECT results 
oracleDataAdapter.Fill(dt); 

我相信這條線設置錯誤:

string js = "$(function() { $('#" + TaskGridViewAB.ClientID + "').datepicker(); });"; 
ScriptManager.RegisterStartupScript(Page, this.GetType(), Guid.NewGuid().ToString(), js, true); 

我也嘗試 - 這也沒有工作:

string js = "$(function() { $('#" + e.Row.Cells[0].ClientID + "').datepicker(); });"; 
ScriptManager.RegisterStartupScript(Page, this.GetType(), Guid.NewGuid().ToString(), js, true); 

注意:我可以替換上述兩行,並將datepicker分配給我有的文本框,但是工作,但是我需要gridview中的日曆,而不是文本框:

string js = "$(function() { $('#" + txtDate.ClientID + "').datepicker(); });"; 
ScriptManager.RegisterStartupScript(Page, this.GetType(), Guid.NewGuid().ToString(), js, true); 

任何幫助將不勝感激。我意識到類似的情況也有類似的問題,但我一直無法得到這個工作。 謝謝。

+0

如果您使用的是GridView RowEditing,那麼只有在進入編輯模式後才能找到該文本框,然後才能在RowEditing事件中找到它 – fnostro

回答

0

我建議嘗試改變選擇器。而不是試圖找出生成的文本框的ID只是檢查標記,並明白這個文本框的確切位置,以及如何用一個選擇器來查明它。

例如,我將假設該文本框在最後的tr中結束,並且該行中只有inputtext。它可以是不正確的,但應具體說明這個思想:

string js = 
    "$(function() {" + 
     "$('#" + txtDate.ClientID + " tr:last')" + 
     ".find('input[type=\"text\"]')" + 
     ".datepicker();" + 
    "});"; 
+0

在文本框中打開日期選擇器並不是問題。正如我所說,那個作品。我只寫了文本框來驗證我的JavaScript行格式正確。我不能做的是在我的GridView中打開datepicker。 –

+0

@CrazyCat,是的,我明白這一點。然而datepicker必須有一個文本框綁定,對吧?您可以在日期列中的該可編輯行中創建該文本框。現在你需要從最後一行中選擇該文本框(再次,不是獨立的,GridView內的),並將datepicker綁定到它。答案是如何做到這一點,而不試圖獲取文本框的ID。 – Andrei

0

當JS/JQ用asp.net控制相結合,我總是嘗試使用靜態ID或CSS類名來查找元素。它使事情變得容易得多,而不必處理id名稱的變形。

您沒有發佈GridView aspx,所以我打算假設您是自動生成的列。

由於您使用在GridView的行編輯功能,我會找到的文本框,並在RowEditing事件追加或添加到的CssClass:

txtData.CssClass += " dtpkr" // the string 'dtpkr' is arbitrary 

然後你就可以在JQ做到這一點:

$(".dtpkr").datepicker(); 
相關問題