protected void exportToCSV_Click(object sender, EventArgs e) { if (exportToCSV.Visible && ViewState["data"] != null) { StringBuilder sb = new StringBuilder(); DataTable dt = ((DataSet)ViewState["data"]).Tables[0]; IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName); sb.AppendLine(string.Join(",", columnNames)); foreach (DataRow row in dt.Rows) { IEnumerable<string> fields = row.ItemArray.Select(field => string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\"")); sb.AppendLine(string.Join(",", fields)); } Response.Clear(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "inline;filename=TeachersBySchoolAndGrade.csv"); Response.AddHeader("Content-Type", "application/Excel"); Response.ContentType = "text/csv"; Response.Write(sb); Response.Flush(); Response.End(); } }
“No problem can be solved from the same level of consciousness that created it.” Albert Einstein (1879-1955)
Tuesday, 30 October 2018
C# Export DataSet to CSV and Download
Monday, 22 October 2018
VSCode Detects lof of Changes (5K) - Exclude files/folder from Git
1. git rev-parse --show-toplevel
2. delete .git folder
1. add .gitignore file to the project
2. add the folder/module name int he added file (e.g. /src/app.js, /node_modules)
2. delete .git folder
1. add .gitignore file to the project
2. add the folder/module name int he added file (e.g. /src/app.js, /node_modules)
Wednesday, 17 October 2018
Independent Redux
Independent Redux const redux = require ('redux'); // using node
const createStore = redux.createStore;
// initialize the state
const initialState = { counter: 0 }
// REDUCER
const rootReducer = (state= initialState, action) => { // set the initial
state
if (action.type === 'INC_COUNTER')
return {
...state, // copy the old state
- prevent changing the original state
counter: state.counter + 1 // read the old state and update it to a new object
};
if (action.type === 'ADD_COUNTER')
return {
...state, // copy the old state
- prevent changing the original state
counter: state.counter + action.value // read the old state
and update it to a new object
};
return state; // finally return the
state
}
// STORE
const store = createStore(rootReducer);
console.log(store.getState());
// SUBSCRIPTION - execute when state is updated - when
action reach to reducer
store.subscribe (() => { console.log('[Subscription]', store.getState()); });
// DISPATCHER - Action
store.dispatch({type: 'INC_COUNTER'}); // for convention, use uupercase type
store.dispatch({type: 'ADD_COUNTER', value: 10}); // property name (value) is up to us
console.log(store.getState());
Subscribe to:
Posts (Atom)
SQL: Generate a range of numbers
SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n), (VALU...
-
//convert BASE64 string to Byte{} array function base64ToArrayBuffer(base64) { var binaryString = window.atob(base64); var binar...
-
static void Main(string[] args) { // create a dummy list List<string> data = GetTheListOfData(); // split the lis...
-
var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter(); htmlToPdf.PageFooterHtml = @"<div style='text-align:right; font-s...