SmartMoney Blogs

Pay Dirt
A daily look at what we buy, how we spend, and the companies that do right - and wrong - by their customers.

Do iPhones Make Us Narcissists?

There’s no app for arrogance. Smartphone users don’t need one, says the author of a new book.

Addiction to gadgets is a national malady, says Larry Rosen, whose book “iDisorder: Understanding Our Obsession with Technology and Overcoming Its Hold on Us,” relates the social and psychological consequences of dependence on iPhones, Androids and Blackberrys. The average teenager sends and receives 3,417 text messages per month, according to Nielsen, or between 7 and 8 per waking hour. In another 2011 study carried out by Rosen, he found younger people’s anxiety escalates when they check their messages.

Stalking Facebook and Twitter causes people to become more depressed and more narcissistic, Rosen says. “Social networking is a predictor of many disorders,” he says. All the talk of “me, me, me” on Facebook suggests social networking has gone too far, he says. Studies also show that one-in-three Generation Xers and one-in-six baby boomers constantly check their devices. Rosen offers some solutions: write a status update or tweet, then take a break. If the words “me” or “I” appear more frequently than “we” or “us,” he says it might be worth re-writing or even deleting it.

We spoke to Rosen about the increasingly tight grip technology has over Americans:

Pay Dirt: Is having Facebook, Twitter, email, calls and texts on the same Smartphone the perfect storm for addictive personalities?

Rosen: All of it has happened so rapidly that we have barely had the time to process it. Technology is changing our world more than ever before. The catalyst now is the Smartphone.

You write that constant social networking can cause and/or exacerbate psychiatric problems. They include: — deep breath — attention deficit hyperactivity disorder, depression, obsessive-compulsive disorder, narcissistic personality disorder, hypochondriasis, schizoaffective and schizotypal disorders, body dysmorphia, voyeurism and addiction. Have I got them all?

There is a large amount of anxiety about connecting with people online. They are the critical ones that seem to be linked with things going wrong. The use of social networking sites tends to show signs and symptoms of many psychiatric disorders when compared with people who don’t do it as much.

We’ve spoken about OCD and ADHD. Do you know ASL?

Larry Rosen

American Sign Language?

Not even close. Try again.

Age, sex, location?

Correct. People now use GPS dating apps to meet each other on the hoof. Who even bothers to send a drink over to the cute guy or girl across a bar or restaurant anymore?

My version of the worldwide web is: Wherever, Whatever, Whenever.

Also, you write that it’s not good for our brains to be clicking away on Facebook an hour before bed. It’s like sleeping with the enemy, right?

Teenagers need around nine hours of sleep a night and they are getting around seven hours during the school week and trying to desperately make up with it by getting 10-plus at the weekend. I worry about what it’s doing to our brains. Before bed, do something that doesn’t stimulate your brain too much like watching TV. That’s a passive activity.

TV gets a free pass? That used to be the main culprit for tech-addicts.

Studies show that TV is positively related to a good night’s sleep. That’s also because people who are watching TV in the hour before they go to bed are usually not on their Smartphones.

Did you know that people text and tweet from church?

Yes, people do try to use it surreptitiously in movie theaters and church. They can’t stand not being in touch. The funniest place is the restrooms in airports. I hear voices coming out of stalls when people were talking on the phone. And many men are cradling their cell phones in their shoulder when they’re doing their business.

What’s really the harm in that?

It’s the excessive aspect of it. It turns us into voyeurs. Facebook addicts spend hours looking at photos of people they don’t really know.

What’s harder: deactivating your Facebook account or donating a kidney? I tried going cold turkey on Facebook for 24 hours.

I don’t advocate giving it up for 24 hours. It makes people crazy. I recommend tech breaks. You give yourself a one-minute tech break. You learn how to focus without your technology. Do this and start lengthening it to 15 minutes, then to half an hour.

Someone once said – the Dalai Lama, I think, among others – that being in the moment is the secret to happiness. Isn’t that ultimately what’s at stake here?

I give a poignant example about exactly that in my book. On vacation recently in Hawaii, I saw a double-rainbow. Next to me three kids were oohing and aahing, but mommy and daddy were videotaping it and taking pictures with their Smartphones. We are recording our lives to enjoy them later. Can you enjoy a beautiful double rainbow on a two-dimensional screen?

Well, you can try. But just be thankful they were photographing the rainbows and not their kids. Everywhere I go these days I see children being told to pose and smile. There’s a whole generation of children whose lives must be like a 24/7 beauty pageant.

When film cost money to process that didn’t happen. But with digital Smartphone cameras, why not take 20 pictures of your child in a row? It’s become easy and, yes, excessive.

One final question — hot off my iPhone. What Twitter aficionado tweeted this yesterday: “The powerful shouldn’t get to create one set of rules for themselves and one set of rules for everyone else.”

I hope that that quote is from someone I respect. Wait, I Googled it and it is. Barack Obama.


Read more:


We welcome thoughtful comments from readers. Please comply with our guidelines. Our blogs do not require the use of your real name.

Comments (5 of 8)

View all Comments »
    • By WebOsPublisher

      column – GridView CommandField issue – SharePoint
      function ()

      Stack Exchange
      log in
      Ask Question
      GridView CommandField issue
      up vote
      down vote
      I have a small problem with a GridView in my web part. I bind a DataTable to the SourceData of my GridView and check if the current user is an administrator. If he is, I will add additional CommandField columns.
      Here a part of my code:
      protected void SumbitSearch_Click(object sender, EventArgs e)

      GridViewResult.DataSource = null;

      GridViewResult.DataSource = result;
      GridViewResult.HeaderRow.Cells[0].Visible = false;
      foreach (GridViewRow gvr in GridViewResult.Rows)

      gvr.Cells[0].Visible = false;

      GridViewResult.HeaderRow.Cells[1].Width = Unit.Pixel(175);
      GridViewResult.HeaderRow.Cells[2].Width = Unit.Pixel(175);
      GridViewResult.HeaderRow.Cells[1].Text = “Von: ” + languageFrom;
      GridViewResult.HeaderRow.Cells[2].Text = “Nach: ” + languageTo;
      //if() Check admin
      CommandField deleteButton = new CommandField();
      deleteButton.ShowDeleteButton = true;

      If I deploy my web part, and click on my button, nothing happens. If I click a second time, suddenly the Ident column appears. If I click a third time, the delete Button appear. A fourth time a second delete Button appear and so on.
      I think the problem occur, because the new delete button column will add at the first column in the table. How could I fix this?
      Btw is it possible to set a css style for the button? If I use deleteButton. ControlStyle.CssClass =””; the css class is valid for the complete table.
      Last Change:
      Okay, now I did it witch CreateChildControls(). But it doesn’t work right. The Button will only displayed at the last row of the Table and the event handler would not be fired.
      My CreateChildControls() looks like:

      protected Button deleteButton;

      if((Page.IsPostBack) $$ ( // Check if admin == true )

      deleteButton = new Button();
      deleteButton.Text = “LГ¶schen”;
      deleteButton.Click += new EventHandler(clickd);

      Later i add a new cell to every row of the gridview:
      TableCell test = new TableCell();
      int i = 0;
      while (i < GridViewResult.Rows.Count)

      deleteButton.ID = “delete_” + GridViewResult.Rows[i].Cells[1].Text;

      I would like to have, a delete button for every row in my table. At the runtime, I dont know how many rows the result have. Is it generally possible to add a control in a function outside of CreateChildControls() if the control is created in the CreateChildControls?
      What works wrong?
      Greetz, Taz
      column gridview
      share|improve this question
      Oct 19 ’11 at 8:54
      Oct 18 ’11 at 14:25
      100% accept rate
      Well I’d say the first problem is that you are adding the button in a postback function. Do you have a CreateChildControls function? – Kit Menke♦ Oct 18 ’11 at 15:00
      No i haven’t. Do you mean to overwrite the CreateChildControls and add here the controls? – hofmeister Oct 18 ’11 at 17:10
      This turned out to be very interesting! I added an example to my answer. Hopefully that helps! – Kit Menke♦ Oct 19 ’11 at 16:52
      1 Answer
      up vote
      down vote
      The problem is that you are creating the CommandField button in a postback event: SumbitSearch_Click. Take a look at Wictor’s wonderful graphic.
      Instead, you should be overriding the CreateChildControls function and creating most of your controls there. You’ll notice, however, that on a postback the CreateChildControls will be called before your SumbitSearch_Click function (which makes sense if you think about it.. the button must exist before the button click event can fire).
      You could use the Page.IsPostback within CreateChildControls to have some separate logic or use OnPreRender to make the decision since it will run after your events.
      Here is an example which uses the session as a DataSource.
      The code:
      class SimpleGridView : CompositeControl

      private const string SESSION_ID = “SalesData”;
      private ObjectDataSource _gridDS;
      private TextBox _txtQuery;
      private SPGridView _grid;
      public DataView SelectData(string query)

      DataTable dataSource = null;
      // using session to simulate a “delete”, otherwise it would do nothing each time :)
      if (null == this.Page.Session[SESSION_ID])

      dataSource = new DataTable();
      // setup columns
      dataSource.Columns.Add(“ID”, Type.GetType(“System.Int32″));
      dataSource.Columns.Add(“Total Sales”, Type.GetType(“System.Double”));
      dataSource.Columns.Add(“Created”, Type.GetType(“System.DateTime”));
      // add some bogus data
      dataSource.Rows.Add(1, “J. Smith”, “Europe”, 10000, new DateTime(2010, 10, 7, 8, 0, 0));
      dataSource.Rows.Add(2, “J. Smith”, “North America”, 15000, new DateTime(2010, 10, 8, 9, 00, 0));
      dataSource.Rows.Add(3, “J. Smith”, “Asia”, 5000, new DateTime(2010, 10, 7, 10, 0, 0));
      dataSource.Rows.Add(4, “S. Jones”, “Europe”, 7000, new DateTime(2010, 10, 9, 11, 0, 0));
      dataSource.Rows.Add(5, “S. Jones”, “North America”, 30000, new DateTime(2010, 10, 7, 9, 00, 0));
      dataSource.Rows.Add(6, “S. Jones”, “Asia”, 8700, new DateTime(2010, 10, 9, 8, 0, 0));
      dataSource.Rows.Add(7, “W. Nguyen”, “Europe”, 3000, new DateTime(2010, 10, 8, 8, 0, 0));
      dataSource.Rows.Add(8, “W. Nguyen”, “North America”, 50000, new DateTime(2010, 10, 7, 12, 30, 0));
      dataSource.Rows.Add(9, “W. Nguyen”, “Asia”, 25000, new DateTime(2010, 10, 7, 8, 0, 0));
      dataSource.Rows.Add(10, “C. O’Reilly”, “Europe”, 200, new DateTime(2008, 1, 16, 15, 0, 0));
      dataSource.Rows.Add(11, “C. O’Reilly”, “North America”, 5000, new DateTime(2009, 11, 1, 16, 0, 0));
      dataSource.Rows.Add(12, “C. O’Reilly”, “Asia”, 8000, new DateTime(2010, 10, 9, 19, 0, 0));
      this.Page.Session[SESSION_ID] = dataSource;


      dataSource = (DataTable)this.Page.Session[SESSION_ID];

      DataView view = new DataView(dataSource);
      if (!string.IsNullOrEmpty(query))

      query = query.Replace(“‘”, “””);
      view.RowFilter = string.Format(“Name LIKE ‘%0%’”, query);

      return view;

      public void DeleteItem(int row_id)

      // do some sort of delete action against our datasource
      // in this simple case, we’re just deleting rows from the session
      DataTable dataSource = (DataTable)this.Page.Session[SESSION_ID];
      DataRow[] rows = dataSource.Select(string.Format(“ID = 0″, row_id));
      if (null != rows $$ rows.Length == 1)


      private void AddBoundField(string name)

      BoundField column = new BoundField();
      column.DataField = name; // must match the column name in the datasource
      column.SortExpression = name;
      column.HeaderText = name;

      protected override void CreateChildControls()

      _txtQuery = new TextBox();
      _txtQuery.ID = “txtQuery”;
      // really all this is good for is causing the page to post back
      Button btnSubmit = new Button();
      btnSubmit.ID = “btnSubmit”;
      btnSubmit.Text = “Submit”;
      btnSubmit.Click += new EventHandler(btnSubmit_Click);
      if (Page.IsPostBack)

      // don’t display the grid until they click submit at least once

      void btnSubmit_Click(object sender, EventArgs e)

      // clear so that they can query multiple times
      // they clicked the button so set our query
      _gridDS.SelectParameters.Add(“query”, _txtQuery.Text);

      private void CreateGridView()

      const string GRIDID = “grid”;
      const string DATASOURCEID = “gridDS”;
      // initialize the ODS
      _gridDS = new ObjectDataSource();
      _gridDS.ID = DATASOURCEID;
      // calling our SelectData function in this CompositeControl
      _gridDS.SelectMethod = “SelectData”;
      // calls our Delete Item method when they click our CommandField delete button
      _gridDS.DeleteMethod = “DeleteItem”;
      // so our grid datasource knows which object to ask for data
      _gridDS.TypeName = this.GetType().AssemblyQualifiedName;
      _gridDS.ObjectCreating += new ObjectDataSourceObjectEventHandler(gridDS_ObjectCreating);
      // we need this event in order to add parameters that will be used for our delete method
      // otherwise it can’t find it
      _gridDS.Deleting += new ObjectDataSourceMethodEventHandler(_gridDS_Deleting);
      // Initialize the grid and link it to the ObjectDataSource
      _grid = new SPGridView();
      _grid.ID = GRIDID;
      _grid.DataSourceID = _gridDS.ID;
      _grid.AutoGenerateColumns = false;
      // Paging
      _grid.AllowPaging = true;
      _grid.PageSize = 10;
      // Sorting
      _grid.AllowSorting = true;
      // add our columns to the grid
      AddBoundField(“Total Sales”);
      // our column that shows the delete button a user can click
      CommandField cfDelete = new CommandField();
      cfDelete.ShowDeleteButton = true;
      cfDelete.ButtonType = ButtonType.Button;
      cfDelete.DeleteText = “Delete”;
      // needed to allow deleting rows using ID
      // if you don’t have this, nothing is sent to your ObjectDataSource “Deleting” event
      string[] dataKeyNames = “ID” ;
      _grid.DataKeyNames = dataKeyNames;
      // setting PagerTemplate to null here will display page numbers for paging
      _grid.PagerTemplate = null;

      void _gridDS_Deleting(object sender, ObjectDataSourceMethodEventArgs e)

      // This function isn’t needed if your ObjectDataSource.DeleteMethod parameters
      // exactly match the column names in your datasource. I found this confusing
      // so I do a little conversion
      // it will be null if the column is not present in the grid’s DataKeyNames
      if (null != e.InputParameters["ID"])

      int id = (int)e.InputParameters["ID"];
      // clear the collection of parameters or it will try to find
      // a delete function that has every single parameter
      // notice that this parameter name matches the parameter in our delete method
      // which was set on the grid’s objectdatasource
      e.InputParameters.Add(“row_id”, id);

      private void gridDS_ObjectCreating(object sender, ObjectDataSourceEventArgs e)

      // our ObjectDataSource uses this CompositeControl to select data
      e.ObjectInstance = this;

      share|improve this answer
      Oct 19 ’11 at 16:51
      Oct 19 ’11 at 2:23
      Kit Menke♦
      See my Last Change:. Thanks. – hofmeister Oct 19 ’11 at 8:17
      @Taz I think you still want to use your CommandField deleteButton. That will add a delete button to each row for you. I think I can create an example for you since I have some code already. – Kit Menke♦ Oct 19 ’11 at 14:51
      That’s great! Thank you. You earned a new achievement: New blog reader. :) Greetz. – hofmeister Oct 20 ’11 at 5:15
      Your Answer
      draft saved
      draft discarded
      log in
      required, but never shown
      Home Page
      By posting your answer, you agree to the
      privacy policy and
      terms of service.
      Not the answer you’re looking for?
      Browse other questions tagged column gridview
      or ask your own question.
      This is a collaboratively edited question and answer site for SharePoint enthusiasts. It’s 100% free, no registration required.Got a question about the site itself? meta is the place to talk about things like what questions are appropriate, what tags we should use, etc.
      about » faq »
      meta »
      column × 202
      gridview × 19
      1 year ago
      492 times
      1 year ago
      Community Bulletin
      Meet the new additions to the Stack Exchange clan
      Like hats? You can have one by celebrating the holiday season with StackExhange!
      URL type column issue in SharePoint List
      How do I edit a custom text field on multiple documents all at once?
      GridView lookups displaying as “id;#value”
      Setting Column Widths
      Always display Comment field
      GridView showing FAST results and inline editing items
      What is SP Grid View $ How to use it?
      Last sites and last items in the same list/table/gridview
      How to set variable with list’s metadata (like customerID)?
      Problem with expanding/collaping gridview rows in Firefox
      Enforce a default value AFTER creating a list item
      How to select specific fields from a list to bind with gri
      Attach document from SharePoint List to GridView
      Don’t show DateTime format on a web part
      How to create Grid view webpart using Visual Studio or code
      Looking for code that will make certain columns read only
      Updated = calculated field based on Modified shows 1899 last update
      How to add a browse button to the image column?
      gridview for picture library with link
      Additional column settings missing for comments column under core document columns
      How to fix width of column in SpGridView?
      Single line of text or managed metadata
      How to delete a column in a content type?
      How to only display the logged in users list items?
      SPDataSource for asp gridView returns nothing?
      question feed
      about |
      faq |
      blog |
      chat |
      data |
      legal |
      privacy policy |
      jobs |
      advertising info |
      mobile |
      contact us
      | feedback
      ■ api/apps
      ■ careers 2.0
      ■ meta
      ■ area 51
      ■ webapps
      ■ gaming
      ■ ubuntu
      ■ webmasters
      ■ cooking
      ■ game development
      ■ math
      ■ photography
      ■ stats
      ■ tex
      ■ english
      ■ theoretical cs
      ■ programmers
      ■ unix
      ■ apple
      ■ wordpress
      ■ physics
      ■ home improvement
      ■ gis
      ■ electrical engineering
      ■ android
      ■ security
      ■ bicycles
      ■ dba
      ■ drupal
      ■ sharepoint
      ■ scifi $ fantasy
      ■ user experience
      ■ skeptics
      ■ rpg
      ■ judaism
      ■ mathematica
      rev 2012.12.7.545
      site design / logo © 2012 stack exchange inc;
      user contributions licensed under cc-wiki with attribution required
      SharePoint – Stack Exchange works best with JavaScript enabled

    • Returning home from Iraq to my surprise I find that my wife had slept with over 20 men and made vieods of these encounters. She hid or depleted over $500,000.00 I earned during my sacrifice to better my family. The courts then award her the home and everything in it forcing me to the street. The courts then award her custody of our son who wants to live with me. Now homeless, on disability, I hunger do to extreme amount of child support due. My crime? Surviving Iraq!

    • -1′

    • Best quote from the interview: We are recording our lives to enjoy them later.

      Love the reference to the Dalai Lama and being in the moment. When people mention the anxiety the experience from being apart from their gadgets it makes me think of the proverbial 2 year old freaking out while his filthy “binkie” is getting a bath.

    • @Nobama: Interesting, until we consider that someone who rhetorically asks “Why mix politics with everything?” does that very same thing with his/her own ID!

About Pay Dirt

  • Pay Dirt examines the millions of consumer decisions Americans make every day: What to buy, how much to pay, whether to rave or complain. Lead written by Quentin Fottrell, the blog examines these interactions, providing readers with news, insight and tips on shopping, spending, customer service, and companies that do right – and wrong – by their customers. Send items, questions and comments to or tweet @SMPayDirt.