台灣最大程式設計社群網站
線上人數
1799
 
會員總數:241157
討論主題:186819
歡迎您免費加入會員
討論區列表 >> C# >> 擁有的selectvalue無效
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
擁有的selectvalue無效
價值 : 30 QP  點閱數:282 回應數:7

樓主

Sanji
門外漢
0 23
335 62
發送站內信

'ddlEditBoatID' 擁有的 SelectedValue 無效,因為它不在項目清單中。
參數名稱: value
這是搜尋後伺服器給我回報的問題

原始碼長這樣
這是主檔的aspx.cs檔
(object sender, EventArgs e)
{
if (Request.Form["boatTime"] == null) return;
ChangePageMode(PageMode.Copy);
int boatTimeID = int.Parse(Request.Form["boatTime"]);

IDataReader dr = TimetableBLL.GetBoatTimeByID(boatTimeID, ←主要是這段
ComID, Globals.ConnectionString);
RenderDataOnForm(dr, true);
}
這是函式庫
public static IDataReader GetBoatTimeByID(int boatTimeID, string comID, string conStr)
{
string query = "select t.*, b.boat_name from boat_timetable t " +
"join boat_master b on b.boat_id = t.boat_id " +
"where t.boat_time_id = @boat_time_id and t.com_id = '" + comID + "'";
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.Add("@boat_time_id", SqlDbType.Int).Value = boatTimeID;
con.Open();
IDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
我在自己的資料庫做過它的搜尋
發現這樣是搜不到結果的
而我把where後面的 t.boat_time_id = @boat_time_id拿掉
它便可以搜出結果
因為我對這個SSMS操作不是那麼熟悉
所以我也不確定到底該怎麼修改

之後我改了把dll檔反組譯後修改了這段
但是它還是報一樣的錯
我想問各位大大這是為什麼





搜尋相關Tags的文章: [ SSMS ] , [ 資料庫 ] , [ C# ] , [ asp.net ] ,
本篇文章發表於2017-09-03 02:43
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小魚
檢舉此回應
我覺得你不是對SSMS不熟悉,
是對SQL不熟悉,
@boat_time_id是參數查詢的參數,
是在SQL要執行的時候才會編譯進去的,
直接貼過去當然不會有結果,
你要把boatTimeID的值替代@boat_time_id才會有結果。

另外你錯誤訊息中的ddlEditBoatID在程式裡根本看不到,
看起來似乎是下拉選單要指定值,但找不到這個值。
本篇文章回覆於2017-09-03 08:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Sanji
檢舉此回應
感謝小魚大大

這一段是網頁頁面的code 才有提到ddlEditBoatID
<asp:DropDownList ID="ddlEditBoatID" runat="server" />
<asp:RequiredFieldValidator id="RequiredFieldValidator3" ControlToValidate="ddlEditBoatID"
Display="Dynamic" runat="server" Text="請選擇船名" CssClass="validate_msg" ValidationGroup="Edit" />
我也上網查過應該是找不到這個值
所以我就懷疑是不是sql搜尋的部分出現問題

而且這在之前是可以顯示的
所以我就不太明白這其中的原因
本篇文章回覆於2017-09-03 14:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

小魚
檢舉此回應
你把語法放到SSMS裡面,
把@boat_time_id改成boatTimeID的值,
執行看看出來的結果跟你要的有沒有一樣,
沒有一樣再找原因吧。
本篇文章回覆於2017-09-03 16:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Sanji
檢舉此回應
小魚大大
改了之後是有值的

我覺得會不會是動到了預存程序
本篇文章回覆於2017-09-03 20:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

小魚
檢舉此回應
這部分看不出來,
你要慢慢Debug,
看問題出在哪一行,
再去找原因。
本篇文章回覆於2017-09-03 21:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Sanji
檢舉此回應
小魚大大

那請問我如果不小心動到預存程序
會不會造成這樣的原因呢?
本篇文章回覆於2017-09-03 22:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

小魚
檢舉此回應
你的程式裡會呼叫到預存程序嗎?
你還是一行一行跑,
看問題出在哪一行吧...
本篇文章回覆於2017-09-04 08:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.