天天看點

自定義月曆控件

  1

自定義月曆控件

using System;

  2

自定義月曆控件

using System.Collections.Generic;

  3

自定義月曆控件

using System.Text;

  4

自定義月曆控件

using System.Web.UI;

  5

自定義月曆控件

using System.Web.UI.WebControls;

  6

自定義月曆控件

using System.Web.UI.HtmlControls;

  7

自定義月曆控件

using System.Drawing;

  8

自定義月曆控件

using System.Collections;

  9

自定義月曆控件

using System.Collections.Specialized;

 10

自定義月曆控件

using System.ComponentModel;

 11

自定義月曆控件
自定義月曆控件

/**//*

 12

自定義月曆控件

 * * ExpentDate:日期控件

 13

自定義月曆控件

 * * Writor:Susan

 14

自定義月曆控件

 * * DateTime:2006/12/18

 15

自定義月曆控件

 */

 16

自定義月曆控件

namespace CtrolBox

 17

自定義月曆控件
自定義月曆控件
自定義月曆控件

{

 18

自定義月曆控件
自定義月曆控件

    /**//// <summary>

 19

自定義月曆控件

    /// 月曆控件

 20

自定義月曆控件

    /// </summary>

 21

自定義月曆控件

    public class ExpentDate: WebControl, INamingContainer,IPostBackDataHandler

 22

自定義月曆控件
自定義月曆控件
自定義月曆控件

 23

自定義月曆控件
自定義月曆控件

        控件屬性#region 控件屬性

 24

自定義月曆控件

            private TextBox _EditBox;

 25

自定義月曆控件

            private Calendar _calDate;

 26

自定義月曆控件

            private ImageButton _btnDate;

 27

自定義月曆控件

            public  int  _Columns=15;

 28

自定義月曆控件

            public TextStyle _Mode;

 29

自定義月曆控件

            public string _ImageUrl = "Images/Calendar.jpg";

 30

自定義月曆控件

            public bool _ReadOnly = true;

 31

自定義月曆控件

        #endregion

 32

自定義月曆控件
自定義月曆控件

        屬性定義#region 屬性定義

 33

自定義月曆控件
自定義月曆控件

            新增屬性#region 新增屬性

 34

自定義月曆控件
自定義月曆控件

            /**//// <summary>

 35

自定義月曆控件

            /// 定義枚舉變量

 36

自定義月曆控件

            /// </summary>

 37

自定義月曆控件

            public enum TextStyle

 38

自定義月曆控件
自定義月曆控件
自定義月曆控件

 39

自定義月曆控件

                point,

 40

自定義月曆控件

                line,

 41

自定義月曆控件

                Midline,

 42

自定義月曆控件

                standard

 43

自定義月曆控件

             }

 44

自定義月曆控件

            [Bindable(true),

 45

自定義月曆控件

             Category("Appearance"),

 46

自定義月曆控件

             DefaultValue("Point"),

 47

自定義月曆控件

             Description("指定日期顯示樣式:point:.;line:/;midline:-;standard:xxxx年xx月xx日")]

 48

自定義月曆控件

             public TextStyle Mode

 49

自定義月曆控件
自定義月曆控件
自定義月曆控件

 50

自定義月曆控件

                 get

 51

自定義月曆控件
自定義月曆控件
自定義月曆控件

 52

自定義月曆控件

                     return _Mode;

 53

自定義月曆控件

                 }

 54

自定義月曆控件

                 set

 55

自定義月曆控件
自定義月曆控件
自定義月曆控件

 56

自定義月曆控件

                     _Mode = value;

 57

自定義月曆控件

 58

自定義月曆控件

 59

自定義月曆控件

 60

自定義月曆控件

 61

自定義月曆控件

             DefaultValue("15"),

 62

自定義月曆控件

             Description("指定日期顯示框的長度")]

 63

自定義月曆控件

            public int Columns

 64

自定義月曆控件
自定義月曆控件
自定義月曆控件

 65

自定義月曆控件

                get

 66

自定義月曆控件
自定義月曆控件
自定義月曆控件

 67

自定義月曆控件

                    return _Columns;

 68

自定義月曆控件

                }

 69

自定義月曆控件

                set

 70

自定義月曆控件
自定義月曆控件
自定義月曆控件

 71

自定義月曆控件

                    _Columns = value;

 72

自定義月曆控件

 73

自定義月曆控件

            }

 74

自定義月曆控件

 75

自定義月曆控件

 76

自定義月曆控件

             DefaultValue("True"),

 77

自定義月曆控件

             Description("指定日期顯示框的可讀性")]

 78

自定義月曆控件
自定義月曆控件

            public bool txtReadOnly 

自定義月曆控件

 79

自定義月曆控件

 80

自定義月曆控件
自定義月曆控件
自定義月曆控件

 81

自定義月曆控件

                    return _ReadOnly;

 82

自定義月曆控件

 83

自定義月曆控件

 84

自定義月曆控件
自定義月曆控件
自定義月曆控件

 85

自定義月曆控件

                    _ReadOnly = value;

 86

自定義月曆控件

 87

自定義月曆控件

 88

自定義月曆控件

 89

自定義月曆控件

 90

自定義月曆控件

            DefaultValue("Images/Calendar.jpg"),

 91

自定義月曆控件

            Description("指定日期按鈕所用圖樣")]

 92

自定義月曆控件

            public virtual string  ImageUrl

 93

自定義月曆控件
自定義月曆控件
自定義月曆控件

 94

自定義月曆控件

 95

自定義月曆控件
自定義月曆控件
自定義月曆控件

 96

自定義月曆控件

                    return _ImageUrl;

 97

自定義月曆控件

 98

自定義月曆控件

 99

自定義月曆控件
自定義月曆控件
自定義月曆控件

100

自定義月曆控件

                    _ImageUrl = value;

101

自定義月曆控件

102

自定義月曆控件

103

自定義月曆控件
自定義月曆控件

104

自定義月曆控件

            /// 開放出來text控件,用于server端取值

105

自定義月曆控件

106

自定義月曆控件

107

自定義月曆控件

108

自定義月曆控件

            DefaultValue(""),

109

自定義月曆控件

            Description("文本框選中值")]

110

自定義月曆控件
自定義月曆控件

            public string  SelectedText 

自定義月曆控件

111

自定義月曆控件

112

自定義月曆控件
自定義月曆控件
自定義月曆控件

113

自定義月曆控件

                    return _EditBox.Text;

114

自定義月曆控件

115

自定義月曆控件

116

自定義月曆控件
自定義月曆控件
自定義月曆控件

117

自定義月曆控件

                    _EditBox.Text = value;

118

自定義月曆控件

119

自定義月曆控件

120

自定義月曆控件

            private string _OnClientChangedText="";

121

自定義月曆控件

122

自定義月曆控件

123

自定義月曆控件

124

自定義月曆控件

            Description("文本框Client事件")]

125

自定義月曆控件

            public string OnClientChangedText

126

自定義月曆控件
自定義月曆控件
自定義月曆控件

127

自定義月曆控件

128

自定義月曆控件
自定義月曆控件
自定義月曆控件

129

自定義月曆控件

                    return _OnClientChangedText;

130

自定義月曆控件

131

自定義月曆控件

132

自定義月曆控件
自定義月曆控件
自定義月曆控件

133

自定義月曆控件

                    _OnClientChangedText = value;

134

自定義月曆控件

135

自定義月曆控件

136

自定義月曆控件

            private string _OnClientChangedKey="onchange";

137

自定義月曆控件

138

自定義月曆控件

139

自定義月曆控件

140

自定義月曆控件

           Description("文本框Client事件類型")]

141

自定義月曆控件

            public string OnClientChangedKey

142

自定義月曆控件
自定義月曆控件
自定義月曆控件

143

自定義月曆控件

144

自定義月曆控件
自定義月曆控件
自定義月曆控件

145

自定義月曆控件

                    return _OnClientChangedKey;

146

自定義月曆控件

147

自定義月曆控件

148

自定義月曆控件
自定義月曆控件
自定義月曆控件

149

自定義月曆控件

                    _OnClientChangedKey = value;

150

自定義月曆控件

151

自定義月曆控件

152

自定義月曆控件

            #endregion

153

自定義月曆控件
自定義月曆控件

            公開屬性#region 公開屬性

154

自定義月曆控件

155

自定義月曆控件

                 Category("Appearance"),

156

自定義月曆控件

                 DefaultValue(""),

157

自定義月曆控件

                 Description("文本框的事件")]

158

自定義月曆控件

            public event System.EventHandler TextChanged;

159

自定義月曆控件

            public void OnTextChanged(Object Sender, EventArgs e)

160

自定義月曆控件
自定義月曆控件
自定義月曆控件

161

自定義月曆控件

                if (TextChanged != null)

162

自定義月曆控件

                    TextChanged(this, e);

163

自定義月曆控件

164

自定義月曆控件

165

自定義月曆控件

166

自定義月曆控件
自定義月曆控件

        控件實作#region 控件實作

167

自定義月曆控件
自定義月曆控件

            重載函數#region 重載函數

168

自定義月曆控件
自定義月曆控件

169

自定義月曆控件

            /// 定義控件内容

170

自定義月曆控件

171

自定義月曆控件

            protected override void CreateChildControls() 

172

自定義月曆控件
自定義月曆控件
自定義月曆控件

173

自定義月曆控件

                try

174

自定義月曆控件
自定義月曆控件
自定義月曆控件

175

自定義月曆控件

                    this.Controls.Clear();

176

自定義月曆控件

                    //添加第一個控件:textbox控件;

177

自定義月曆控件

                    this._EditBox = new TextBox();

178

自定義月曆控件

                    this._EditBox.TextChanged += new EventHandler(OnTextChanged);

179

自定義月曆控件

                    this._EditBox.Attributes.Add(this._OnClientChangedKey, this._OnClientChangedText);

180

自定義月曆控件

                    this._EditBox.Columns =this._Columns;

181

自定義月曆控件

                    this._EditBox.ID = "EditBox";

182

自定義月曆控件

                    this._EditBox.ReadOnly = this._ReadOnly;

183

自定義月曆控件

                    this._EditBox.Text = fn_getDate(DateTime.Now.ToString("yyyy-MM-dd"));

184

自定義月曆控件

                    this.Controls.Add(new LiteralControl("<table><tr><td valign=\"Top\"

185

自定義月曆控件

 width=\"100%\">"));

186

自定義月曆控件

                    this.Controls.Add(this._EditBox);

187

自定義月曆控件

                    //添加第二個參數,标志位

188

自定義月曆控件

                    HtmlInputHidden hidonClickFlg = new HtmlInputHidden();

189

自定義月曆控件

                    hidonClickFlg.ID = "hidonClickFlg";

190

自定義月曆控件

                    hidonClickFlg.Value = "Y";

191

自定義月曆控件

                    this.Controls.Add(hidonClickFlg);

192

自定義月曆控件

                    //加入操作button

193

自定義月曆控件

                    this._btnDate = new ImageButton();

194

自定義月曆控件

                    this._btnDate.ID = "btnDate";

195

自定義月曆控件

                    this._btnDate.ImageUrl = this._ImageUrl;

196

自定義月曆控件

                    this._btnDate.Click += new ImageClickEventHandler(_btnDate_Click);

197

自定義月曆控件

                    this.Controls.Add(this._btnDate);

198

自定義月曆控件

                    //加入月曆

199

自定義月曆控件

                    this.Controls.Add(new LiteralControl("&nbsp;</td></tr></table>

200

自定義月曆控件

<div id='divextenddate' style='POSITION:absolute;display:;'>"));

201

自定義月曆控件

                    //整體設定

202

自定義月曆控件

                    this._calDate = new Calendar();

203

自定義月曆控件

                    this._calDate.ID = "calDate";

204

自定義月曆控件

                    this._calDate.BackColor = Color.White;               

205

自定義月曆控件

                    this._calDate.ShowGridLines = true;

206

自定義月曆控件

                    this._calDate.BorderColor = Color.DodgerBlue;

207

自定義月曆控件

                    this._calDate.BorderStyle = BorderStyle.Double;

208

自定義月曆控件

                    this._calDate.Font.Size = 10;

209

自定義月曆控件

                    this._calDate.Font.Name = "Verdana";

210

自定義月曆控件

                    this._calDate.ForeColor = Color.Black;

211

自定義月曆控件

                    this._calDate.Visible = false;

212

自定義月曆控件

                    //設定title

213

自定義月曆控件

                    this._calDate.TitleStyle.BackColor = Color.DodgerBlue;

214

自定義月曆控件

                    this._calDate.TitleStyle.ForeColor = Color.White;

215

自定義月曆控件

                    //設定星期

216

自定義月曆控件

                    this._calDate.DayHeaderStyle.BackColor = Color.WhiteSmoke;

217

自定義月曆控件

                    this._calDate.DayHeaderStyle.ForeColor = Color.Black;

218

自定義月曆控件

                    //設定上下月

219

自定義月曆控件

                    this._calDate.NextPrevFormat = NextPrevFormat.CustomText;

220

自定義月曆控件

                    this._calDate.NextPrevStyle.ForeColor = Color.White;

221

自定義月曆控件

                    this._calDate.NextPrevStyle.Font.Size = 8;

222

自定義月曆控件

                    //設定其它的:目前日期,選中日期,不是本月的日期

223

自定義月曆控件

                    this._calDate.OtherMonthDayStyle.ForeColor = Color.DarkGray;

224

自定義月曆控件

                    this._calDate.TodayDayStyle.BackColor = Color.Coral;

225

自定義月曆控件

                    this._calDate.TodayDayStyle.ForeColor = Color.White;

226

自定義月曆控件

                    this._calDate.SelectedDayStyle.BackColor = Color.CornflowerBlue;

227

自定義月曆控件

                    this._calDate.SelectedDayStyle.ForeColor = Color.White;

228

自定義月曆控件

                    //添加事件            

229

自定義月曆控件

                    this._calDate.SelectionChanged += new EventHandler(_calDate_SelectionChanged);

230

自定義月曆控件

                    this._calDate.Attributes.Add("onclick", "document.all." + hidonClickFlg.ClientID + ".value='Y';");             

231

自定義月曆控件

                    this.Controls.Add(this._calDate);

232

自定義月曆控件

                    this.Controls.Add(new LiteralControl("</div>"));

233

自定義月曆控件

                    //加入js事件用于點其它地方時,隐藏月曆

234

自定義月曆控件

                    this.Controls.Add(new LiteralControl("<SCRIPT event=onclick()  for=document>if(document.all." +

235

自定義月曆控件

  hidonClickFlg.ClientID + ".value!='Y'){divextenddate.style.display='none';}else{document.all." + 

236

自定義月曆控件

hidonClickFlg.ClientID + ".value='';divextenddate.style.display='';}</SCRIPT>"));

237

自定義月曆控件

238

自定義月曆控件

                catch (Exception exception2)

239

自定義月曆控件
自定義月曆控件
自定義月曆控件

240

自定義月曆控件

                    throw exception2;

241

自定義月曆控件

242

自定義月曆控件

            }        

243

自定義月曆控件
自定義月曆控件

244

自定義月曆控件

            /// 實作接口function

245

自定義月曆控件

246

自定義月曆控件

            /// <param name="postDataKey"></param>

247

自定義月曆控件

            /// <param name="postCollection"></param>

248

自定義月曆控件

            /// <returns></returns>

249

自定義月曆控件

            public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)

250

自定義月曆控件
自定義月曆控件
自定義月曆控件

251

自定義月曆控件

                return true;

252

自定義月曆控件

253

自定義月曆控件
自定義月曆控件

254

自定義月曆控件

            ///  實作接口function

255

自定義月曆控件

256

自定義月曆控件

            public virtual void RaisePostDataChangedEvent()

257

自定義月曆控件
自定義月曆控件
自定義月曆控件

258

自定義月曆控件

259

自定義月曆控件
自定義月曆控件
自定義月曆控件

260

自定義月曆控件

261

自定義月曆控件

262

自定義月曆控件
自定義月曆控件
自定義月曆控件

263

自定義月曆控件

264

自定義月曆控件

265

自定義月曆控件

266

自定義月曆控件
自定義月曆控件

267

自定義月曆控件

            /// 重載funciton

268

自定義月曆控件

269

自定義月曆控件

            /// <param name="writer"></param>

270

自定義月曆控件

            protected override void Render(HtmlTextWriter writer)

271

自定義月曆控件
自定義月曆控件
自定義月曆控件

272

自定義月曆控件

                this.EnsureChildControls();

273

自定義月曆控件

                base.Render(writer);

274

自定義月曆控件

275

自定義月曆控件
自定義月曆控件

276

自定義月曆控件

            /// 重載function 

277

自定義月曆控件

278

自定義月曆控件

            public override void DataBind()

279

自定義月曆控件
自定義月曆控件
自定義月曆控件

280

自定義月曆控件

281

自定義月曆控件
自定義月曆控件
自定義月曆控件

282

自定義月曆控件

                    base.DataBind();

283

自定義月曆控件

284

自定義月曆控件

285

自定義月曆控件
自定義月曆控件
自定義月曆控件

286

自定義月曆控件

287

自定義月曆控件

288

自定義月曆控件

289

自定義月曆控件

290

自定義月曆控件
自定義月曆控件

            一般函數#region 一般函數

291

自定義月曆控件
自定義月曆控件

292

自定義月曆控件

            /// 日期button事件

293

自定義月曆控件

294

自定義月曆控件

            /// <param name="sender"></param>

295

自定義月曆控件

            /// <param name="e"></param>

296

自定義月曆控件

            void _btnDate_Click(object sender, ImageClickEventArgs e)

297

自定義月曆控件
自定義月曆控件
自定義月曆控件

298

自定義月曆控件

                this._calDate.Visible = true;

299

自定義月曆控件

300

自定義月曆控件
自定義月曆控件

301

自定義月曆控件

            /// 標明日期function

302

自定義月曆控件

303

自定義月曆控件

304

自定義月曆控件

305

自定義月曆控件

            void _calDate_SelectionChanged(object sender, EventArgs e)

306

自定義月曆控件
自定義月曆控件
自定義月曆控件

307

自定義月曆控件

                if (this._calDate.SelectionMode.Equals(CalendarSelectionMode.Day))

308

自定義月曆控件
自定義月曆控件
自定義月曆控件

309

自定義月曆控件

                    string strdate=this._calDate.SelectedDate.ToString();

310

自定義月曆控件

                    strdate = strdate.Substring(0, strdate.IndexOf(":") - 2);

311

自定義月曆控件

                    this._EditBox.Text = fn_getDate(strdate);

312

自定義月曆控件

313

自定義月曆控件

                    //加載事件

314

自定義月曆控件

                    OnTextChanged(sender, e);

315

自定義月曆控件

316

自定義月曆控件
自定義月曆控件

                else 

自定義月曆控件

317

自定義月曆控件

                    this._calDate.Visible = true;

318

自定義月曆控件

319

自定義月曆控件

320

自定義月曆控件
自定義月曆控件

321

自定義月曆控件

            /// 轉換日期格式

322

自定義月曆控件

323

自定義月曆控件

            /// <param name="strdate">要轉日期</param>

324

自定義月曆控件

325

自定義月曆控件
自定義月曆控件

            protected string fn_getDate(string strdate)

自定義月曆控件

326

自定義月曆控件

                switch (this._Mode)

327

自定義月曆控件
自定義月曆控件
自定義月曆控件

328

自定義月曆控件

                    case TextStyle.line:

329

自定義月曆控件

                        strdate = strdate.Replace("-", "/");

330

自定義月曆控件

                        break;

331

自定義月曆控件

                    case TextStyle.point:

332

自定義月曆控件

                        strdate = strdate.Replace("-", ".");

333

自定義月曆控件

334

自定義月曆控件

                    case TextStyle.Midline:

335

自定義月曆控件

                        strdate = strdate.Replace("-", "-");

336

自定義月曆控件

337

自定義月曆控件

                    default:

338

自定義月曆控件

                        strdate = (strdate.Split("-".ToCharArray()))[0] + "年" + (strdate.Split("-".ToCharArray()))[1] + "月" +

339

自定義月曆控件

strdate.Split("-".ToCharArray())[2] + "日";

340

自定義月曆控件

341

自定義月曆控件

342

自定義月曆控件

                return strdate;

343

自定義月曆控件

344

自定義月曆控件

345

自定義月曆控件

346

自定義月曆控件

    }

347

自定義月曆控件

}

348

自定義月曆控件

注冊到專案中(web.config)

349

自定義月曆控件

<pages>

350

自定義月曆控件

    <controls>

351

自定義月曆控件

        <!-- 注冊自定義控件 -->

352

自定義月曆控件

        <add tagPrefix="ppmis" namespace="CtrolBox" assembly="CtrolBox"/>

353

自定義月曆控件

        <!-- 注冊使用者控件 -->

354

自定義月曆控件

        <add tagPrefix="ppmis" src="~/Controls/UnitCtl.ascx" tagName="UnitCtl"/>

355

自定義月曆控件

    </controls>