發表文章

IE11與其他瀏覽器在checkbox上綁定v-model值的改變時機

環境: M$ MVC4 Razor + Vue + jQuery Vue版本2.6.10 jQuery版本1.10.2 需要實現當某個checkbox被改變狀態後,依據被改變的狀態連動其他值 按照以前寫jQuery的寫法 就是抓這個checkbox的id,然後下.prop('checked') 這方法需要jQuery 1.6以上才會準確,但目前手上正在用的是1.10,所以沒問題 但想說都用Vue了,那我直接拿綁定在checkbox上的v-model值不就好了嗎? 這樣就不必再下jQuery取值了,多方便 現在我有一個model為Item Item:{ IsSelected:false ,CanSel:true ,CanSelCtrl:true } 然後把它綁在checkbox上: <input v-bind:id="1" v-on:click="ChkCtrl(Item)" type="checkbox" v-bind:value="true" v-model="Item.IsSelected" v-bind:disabled="!(Item.CanSel) || !(Item.CanSelCtrl)"> 接著實做了ChkCtrl... methods: {      ChkCtrl:function(item){     var status = item. IsSelected;//直接抓model的內容      console.log(status);//輸出看結果      }, } 原本以為這樣寫萬無一失 但後來發現...在Chrome(81)、Edge(81)、FireFox(76)環境下 按下checkBox後的ChkCtrl中,會輸出false 但是在IE11,則會輸出true 翻船啦 這代表在按下瞬間,IE11是已經將checkbox的值換到Item.IsSelected上面去 但是Chrome、Edge、FireFox則還沒 要解決這問題 目前我採用的方式是走回頭路 改傳checkbox的id,直接用prop抓checked值 <input v-bind:id="1" v-...

iText7 - C# - 如何計算頁數

我們在用iText輸出列表若有頁數計算需求時(如1/3、2/3、3/3這種) 目前是算1頁中會輸出多少筆後,除以總筆數得到會輸出多少頁 但如果有格子資料太多導致列高撐大,1頁中容納不下當初設定的筆數就會跑版 例如原先預估可容納14筆,結果輸出的內容文字過多導致1頁塞10筆就滿了 這時候就會導致排版亂掉,表頭也會出現在不該出現的地方 iText7的官網有提供範例程式碼(java版本,method大小寫改一下就能對應C#) 可在整個文件完成後再插入頁碼 但如果直接應用的話,會出現「Cannot draw elements on already flushed pages」的Exception 這是因為,Document本身有一個參數immediateFlush預設為true 這參數為true時,代表當執行了Document.Add(),就會順便執行Flush指令 也因為immediateFlush=true,導致無法在Document.Add()後再插入頁碼 因此需要在new Document時,先將immediateFlush改為false(建構子) 並在完成頁碼插入後,手動下Flush() 或許會有疑問為何不將Document.Add()放在後面再執行 這是因為只有在Add()了table之後,才能依靠PdfDocument.GetNumberOfPages()取得真實總頁數 參考文件 https://itextpdf.com/en/resources/examples/itext-7/adding-page-numbers-existing-pdf https://itextpdf.com/en/resources/faq/technical-support/itext-7/when-content-flushed-pdf-file-itextsharp